OS_05_1 Processes
1. Process Concepts
1) Process Definition
- Process는 실행되는 program이다.
- process의 구성요소
- Address Space → process가 사용하는 메모리 공간
- Code (instructions)
- Data (Global variables)
- Stack (Subroutine parameters, return address, temporary varialbes)
- Current activity
2) PCB (Process Control Block)
- PCB는 각 process에 대한 정보를 담고 있다.
- Process state
- Program counter
- CPU registers
- CPU scheduling information
- Memory-management information
- Accounting information
- I/O status information
struct 구조로 구현되어 있다.
3) Process State
- process가 실행되면, process의 state는 변화한다.
- new → process가 만들어지고 있는 상태
- running → instructions들이 실행되고 있는 상태
- waiting → process가 발생한 event를 기다리고 있는 상태 (I/O completion, signal reception)
- ready → process가 CPU 할당되는 것을 기다리고 있다.
- terminated : process가 종료된 상태.
- ready 상태 → 언제든지 CPU가 주어지면 실행 가능하다.
- ready 상태가 7개고 waiting 상태가 3개라면 다음 스케줄 후 process는 ready 6개 running 1개 waiting 3개.
2. Process Scheduling
process → unit of scheduling (스케줄링의 대상!)
1) CPU scheduling for processes
- 목적
- multitasking을 위해 OS는 memory에 loaded되어 있는 여러개의 Process중에 실행 시킬 process를 골라야 한다. (CPU 개수 보다 process가 많으면 선택해야 함.)
- Basic scheduling operation (해당 순서를 반복)
- run the process for a while
- wait until an interrupt happpens or the process yields CPU
- stop it and save its state
- choose another process to run next
- load the state of chosen process
2) Scheduling and Dispatching
- policy와 mechanism의 분리
- scheduling policy → 다음에 실행할 process를 선택
- Dispatching mechanism → 선택한 process로 switch
3) Context Switching
- dispatcher가 다른 process로 switch할 때,
- system은 반드시 old process의 상태를 저장하고, 새로운 process의 저장된 state를 불러와야 한다.
- Process context (process state)
- system context → 열려있는 파일의 memory management, accounting, I/O status 같은 정보이다. (변하지 않음)
- memory context → code, data, stack, heap 부분의 메모리 내용이다. (변하지 않음)
- processor context → processor의 registers (변함) → PCB에 저장한다.
- Context-switching은 overhead이다.
- system은 context switching중에 의미있는 work를 할 수 없다.
- 하드웨어 따라 시간이 달라진다.
- 컨텍스트 전환은 단순히 현재 레지스터 세트의 포인터를 변경하는 것으로 이루어진다.
4) Different Types of Scheduling Queues
-
Job queue (for process bookkeeping)
- system에 존재하는 모든 process를 넣어두는 queue
-
Ready queue (for CPU scheduling)
- main memory에 존재하면서 execute를 ready, waiting하고 있는 모든 process들의 집합
- Linked list 방식으로 구현 되어 있다.
- ready queue의 header는 처음과 마지막 PCB를 pointing하고 있다.
-
Device queue (for I/O scheduling)
- I/O device를 위해 기다리고 있는 process들의 집합
-
process들은 queue사이를 옮겨다닌다.
Ready Queue와 I/O Device Queue
- 프로세스를 대신하는 PCB에 linked list로 연결되어 있는 구조이다.