운영체제(3) - 프로세스(1)
‘운영체제’를 공부하여 정리한 내용입니다.
1. Process Cocept
프로그램이 메모리상에 적재될 때 가지는 것 - 프로세스가 될 때 가지는 것
- 우리는 이것을 프로세스라고 부른다.
- 구성 요소
- 텍스트 세그먼트
- 기계어
- 데이터
- 전역 변수 등
- 스택과 힙
- 텍스트 세그먼트
Process State
-
상태는 다음과 같은 것들이 있다.
- new: 프로세스 생성 중
- running: CPU 시간을 소비중이다, 명령어가 실행되는 중이다.
- waiting: 프로세스가 어떤 사건을 기다린다. (입출력 등)
- ready: 프로세스가 처리기에 할당되기를 기다린다.
- terminated : 프로세스가 실행을 종료했다.
-
처리기는 CPU라고 생각하면된다.
- 처리기는 어느 순간에나 무조건 하나의 프로세스만 실행한다는 것을 기억하자.
PCB(Program Control Block)
- PCB는 특정 프로세스와 관련한 여러 정보를 가지고 있다.
- Process State
- PC(Program Counter)
- CPU 레지스터에 저장되어 있던 값들
- CPU-scheduling info.
- 우선순위, Schedule Queue에 관한 포인터와 매개변수
- 메모리 관리 정보
- MMU(Memory Management Unit)에서 계산에 사용할 base, limit 레지스터 값
- 페이지 테이블, 세그먼트 테이블 정보
- 회계(Accounting) 정보
- 입출력 상태 정보
- 프로세스에 할당된 입출력 장치
- 열린 파일 목록
Threads
- 지금은 아직 크게 고려되지는 않았지만, 본래 Thread 정보도 PCB에 포함된다.
2. Process Scheduling
Scheduling Queues
-
ready queue
- linked list의 형태를 가진다.
- 첫번째 프로세스의 PCB와 큐의 마지막 PCB를 가리키는 포인터를 포함한다.
-
device queue
- 각 장치는 모두 가진다.
- 모든 프로세스가 한번에 CPU를 쓸 수 없듯이, 장치도 한번에 사용할 수 없기 때문에 큐가 필요하다.
프로세스가 CPU 제어를 다른 프로세스에게 넘기는 상황
- 입출력 요청
- sub-process를 만들어서 wait 할 때
- 인터럽트로 인해, 인터럽트로 그 제어를 넘길 때.
- 예시로는, 일정 시간이 지났을 때, 타이머 인터럽트를 생각해볼 수 있다.
Schedulers
- Job Scheduler
- long term scheduler라고도 불린다.
- 메인 메모리에 모든 프로세스를 못 올리는 상황이 있다.
- 이런 상황에는 메인 메모리로 올리기 전에, 어떤 것을 올릴지를 선택하는 스케쥴러가 필요하다.
- 기다리는 프로세스들은 디스크에 저장되어 실행되는 것을 기다린다.
-
CPU Scheduler
- short term scheduler라고도 불린다.
- ready가 완료된 프로세스들 중에 선택한다. (메인 메모리 위에 적재되어있다.)
- CPU를 할당하기 위한 스케쥴러다.
-
Job Scheduler가 고려해주어야 하는 것
- 프로세서가 생성되는 주기는 프로세스가 이탈되는 주기와 같아야 한다.
- 그래야 메인 메모리가 최대한 사용되고 있는 것이 보장되기 때문이다.
- 또한 CPU 중심 프로세스와 입출력 중심 프로세스를 적절히 섞어서 실행시켜야 한다.
- 어느 한쪽이 많아지면 ready queue나 device queue 중 하나에 프로세스가 몰려서 퍼포먼스가 떨어진다.
- 프로세서가 생성되는 주기는 프로세스가 이탈되는 주기와 같아야 한다.
- 현대의 OS들은 Job Scheduler를 두지 않는다.
- 메인 메모리에 프로세스를 얼마나 올리고, 나중에 실행할지를 유저에게 맡기자는 철학을 가진다.
- 그리고 이게 잘 동작한다.
- 쓸모없는 구현 비용을 줄인다.
Context Switch
- CPU 제어가 현재 프로세스에서 다른 프로세스로 넘어갈 때 일어나는 작업이다.
- 현재의 프로세스가 다시 CPU 제어를 차지했을 때 이전의 연산을 이어서 진행하기 위해 필요한 정보를 PCB에 백업한다.
- 저장하는 정보는 주로 PC, 레지스터 정보 등등이다.
- 이건 알고리즘 적으로 최적화하는 것이 거의 불가능한 순수한 오버헤드다.
- 하드웨어가 가끔 서포트하기도 하지만, 한계가 있다.
- Sun UltrSPARC 등의 예시를 찾아보자.
Leave a Comment