* CPU의 사용을 최대화 하는 것이 목표
* CPU의 상태는 2단계에서 머문다.(CPU 계산 or I/O대기)
- 두 단계의 CPU Burst가 순환하면서 발생
* 전체적인 performance를 높이기 위해서 CPU scheduler는 ready queue에 있는 process중 하나를
선택할 수 있다.
* CPU Scheduler가 발생하는 시기
ⓐ running > waiting
ⓑ running > ready
ⓒ waiting > ready
ⓓ running > terminated
- ⓐ, ⓓ번은 process가 자발적으로 이동을 실시한다.
- ⓑ, ⓒ번은 process가 외부에 의해 타의적으로 발생한다.
ⓑ, ⓒ과 같은 사건이 발생하기 위해서는 다음과 같은 조건이 필요하다.
(Preemptive Scheduling 발생 조건 및 제약 사항)
조건 : hardware support : Timer가 필요하다.
제약사항 : kernel, shared data에 대한 처리가 확실해야한다.
shared, kernel data에 쓰고 있는 도중에 강제적으로 process상태가 변화하면 data 내용이
변화할 수 있다. 이러한 제약사항을 해결 하기 위해서 다음과 같은 과정을 걸친다.
① running process에 CPU점유가 끝날 것을 알려준다.
② process는 지금 실행하는 일까지만 수행을 한후 CPU에서 나간다.
* CPU Dispatcher
- CPU가 Process를 선택하는 것으로 다음 과정을 포함한다.
ⓐ Switching context
ⓑ Switching to user mode
ⓒ 이전에 종료된 위치에서 process를 재실행
> Dispatcher latency(Dispatcher 시간)은 짧아야 한다.
* Scheduling Criteria(스케쥴링 목적)
ⓐ (CPU utilization) CPU가 쉬지 않고 지속적으로 실행
ⓑ (Throughput) 완료한 process, 단위 시간당 처리량 증가
ⓒ (Turnaround time) 특정 process를 실행하는데 소요되는 시간 감소
ⓓ (Waiting time) 프로세스가 ready queue에서 기다리는 시간 감소
※ ready queue에서 기다리는 것이다. I/O or event queue에서 기다린 시간은 포함X