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

[OS] CPU Scheduling(Sort-term Scheduling) Part 1

Cloud Travel 2012. 4. 30. 18:19

* First Come First Served(FCFS)

 - 들어오는 순서대로 실행하는 가장 간단한 스케쥴링 법

 - Non-Preemptive

  ex)

 

   Waiting Time : P1 = 0, P2 = 20, P3 = 25

   Average Waiting time = ( 0 + 20 + 25 ) / 3 = 15


* Shortest -Job-First(SJF)

 - ready queue에 존재하는 process들의 Burst Time을 미리 추측가능해야한다.

 - SJF는 평균 대기시간을 가장 짧게 해주는 최적의 알고리즘이다.

   그러나, CPU brust time을 추측해야 한다. > Process의 다음 burst time 추측은 다음에 의거한다.

   Tn+1 = a*tn + (1-a)Tn

   T : 추측시간 / t : 실제 burst time / a : 보정 상수

   ex) 

   

   ex) 

 

   Waiting Time : P1 = 7, P2 = 2, P3 = 0

   Average Waiting Time = (7+2+0)/3 = 3


* Shortest-remaining time first

 - SJF에 추가적으로 프로세스 이용 개념이 추가

 - Process가 들어오면 현재 있는 프로세스의 burst time을 비교해여 가장 짧은 Process를 실행

 - process가 들어오는 시간도 중요하다!

 ex) 

 


* Priority Scheduling

 - 각 Process마다 우선순위를 부여하여 수행할 process를 선택

 - 돌아올때마다 중요도를 다시 판단하는 Preemptive방식과 Non-Preemptive방식이 존재한다.

 - OS마다 오름, 내름 차순이 다르다.

    (Unix계열 : 오름차순 / Window계열 : 내림차순)

  ex) 

  


   

 - 이러한 priority는 다음과 같은 문제가 발생한다.

  > Starvation(기아) : priority가 낮은 process는 영영 실행이 안된다.

  > 해결책 -> Aging : process가 ready queue에서 시간이 지남에 따라(나이가 들면) Priority가 향상된다.


* Round Robin(RR)

 - 모든 Process가 CPU time(time quantum = clock time)씩 돌아가면서 계속 실행한다.

 - Quantum시간이 지날때마다 time interrupt가 발생한다.