먼저 대기 큐에 들어온 프로세스 먼저 스케줄
Example
Process | Burst Time |
---|---|
24 | |
3 | |
3 |
프로세스의 도착 순서 , ,
Wating Time for = 0, = 24, = 27
Gantt chart
Average waiting time: (0 + 24 + 27) / 3 = 17
Convoy effect :burst time이 짧은 process 뒤에 burst time이 긴 process가 위치
각 프로세스의 다음번 CPU burst time을 가지고 스케줄링에 활용
CPU burst time이 가장 짧은 프로세스를 제일 먼저 스케줄
Example
Process | Arrival Time | Burst Time |
---|---|---|
0.0 | 7 | |
2.0 | 4 | |
4.0 | 1 | |
5.0 | 4 |
Gantt chart
Average waiting time = (0 + 6 + 3 + 7) / 4 =4
SJF is optimal
주어진 프로세스들에 대해 minimum average waiting time을 보장
Preemptive(SRTF 스케줄링)가 더욱 optimal한 방법
기아현상 발생
계속 CPU burst time이 짧은 프로세스가 수행되게 될 경우, CPU burst time이 긴 프로세스는 영원히 수행되지 못함
CPU burst time을 예측할 수 없음
현재 수행중인 프로세스의 남은 burst time보다 더 짧은 CPU burst time을 가지는 새로운 프로세스가 도착하면 CPU를 빼앗김
Example (SJF예와 동일)
Process | Arrival Time | Burst Time |
---|---|---|
0.0 | 7 | |
2.0 | 4 | |
4.0 | 1 | |
5.0 | 4 |
Gantt chart
Average waiting time = (9 + 1 + 0 + 2) /4 =3
각 프로세스는 동일한 크기의 할당 시간(time quantum)을 가짐 (일반적으로 10ms ~100ms)
할당시간이 지나면 프로세스는 선점(preempted)당하고 ready queue의 제일 뒤에 가서 다시 줄을 섭니다.
n개의 프로세스가 ready queue에 있고 할당 시간이 q time unit인 경우 각 프로세스는 최대 q time unit 단위로 CPU 시간의 1/n을 얻습니다.
어떤 프로세스도 (n-1)q time unit 이상 기다리지 않습니다.
Example
Process | Burst Time |
---|---|
53 | |
17 | |
68 | |
24 |
Gantt chart
Performances
일반적으로 SJF보다 average turnaround time이 길지만 response time은 더 짧습니다.
시분할 환경에서 인터랙티브한 작업을 처리하기 위해서는 response time이 중요합니다.
Long job과 Short job이 섞여 있는 환경에서 적합합니다. 동일한 burst time이 있는 작업이 수행되어야 한다면, average turnaround time이 길어지게 될 수 있습니다.
Multilevel Queue
Ready queue를 여러 개로 분할
각 큐는 독립적인 스케줄링 알고리즘을 가짐
큐에 대한 스케줄링이 필요
Multilevel Feedback Queue
프로세스가 다른 큐로 이동 가능
에이징(aging)을 이와 같은 방식으로 구현할 수 있다.
Multilevel-feedback-queue scheduler를 정의하는 파라미터들