* 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가 발생한다.