Process address space
- virtual memory
- Stack : method, local value
- heap : Dynamically allocate moemory
- data
- text : code
Process
- not Program (text) : passive : "Execution"
- Program + Stack + Heap + PCB : active (유동적으로 변동한다)
Process State
- new : created
- running : executed (현재 진행중인 프로세스)
- waiting : Interrupt를 기다리는중 (I/O request 상태)
- ready : 다른 process가 running 중일때 임시정지상태
- terminated : finished
State diagram
- ready - running : Dispatch (스케쥴러에 의해 running 상태로 변환)
- running - ready : interrupt (Interrupt exit 발생 후 스케쥴러에 의해 다른 process가 running 상태로 변환)
- running - waiting : I/O event
- wating - ready : I/O event finished
PCB
- Process Control Bolck
- 프로세스를 유지하기 위한 data structure
- PC (Program Counter) : register값을 저장
- CPU regester (regesters, stack pointer) 저장
- Context switch가 이루어질 때 정보를 저장, 불러오는 공간 (snapshot)
- Memory에 위치하기 때문에 Context switch가 자주 일어나는 경우 느려진다
Process scheduling
- scheduling : process 간의 전환
- queue : process 들이 기다리는 공간 (first in first out 방식)
- Job queue : set of processes in the system
- Ready queue : set of ready 상태의 processes / Dispatch 발생시 running process 변환
- Device queues : set of I/O event 발생한 processes / event 종료시 ready queue로 이동
Process의 두가지 분류
- I/O bounded : 입출력이 잦은 process / ex) word process / 우선순위 우선
- CPU bounded : 연산이 많은 process / ex) decoding / 우선순위 차후
Scheduler
- process간의 전환을 담당
- Long term scheduler
Process의 개수를 조절하는 의미, 실제로는 사용되지 않는 알고리즘
- Short term scheduler (CPU scheduler)
Ready queue - 1 process 선택하여 Dispatch 하는 역할 (매우 빈번하게 발생)
Timer Device 에서 10ms마다 interrupt 발생하기 때문에 최소 10ms마다 동작
- Medium term scheduler
swap in, swap out 담당, Momory 공간이 제한적이기 때문에 swap out process를 택하는 역할
architecture of Context-switch
- Context-switch가 자주 일어날수록 느려지기 때문에 여러가지 architecture가 존재
- SUN UltraSPARC : Multiple sets of registers
Context switch 발생시 PCB저장 대신 특정 regester에 저장하는 방식으로 Memory 접근을 줄인 방식
- ARM : Mutiple store and load instructions
한가지 process가 아닌 여러 process들의 PCB 데이터를 store, load 하는 방식으로 Memory 접근을 줄인 방식
Process - fork
- fork : creation (프로세스 생성)
- forming tree : 프로세스는 tree 형식이기 때문에 부모 process - 자식 process를 접근하는 fork가 자주 발생
- PID : Process ID : tree 구조에서 각 process의 id값