프로그래밍[Univ]/운영체제

[OS] CPU Scheduling(Sort-term Scheduling) Basic

Cloud Travel 2012. 4. 30. 17:44

* 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