0 / 6
우선순위 스케줄링(Priority Scheduling)
프로세스마다 중요도에 따라 우선순위를 매겨 두고, 앞 프로세스가 끝날 때마다 줄에서 우선순위가 가장 높은 프로세스를 실행한다. 도착 순서나 실행 시간은 보지 않는다. 여기서는 비선점형으로 돌린다.
은행으로 치면: 앞사람 볼일이 끝나면, 기다리는 손님 중 가장 중요한 손님부터 부른다.
1 / 6
0ms: P1 실행 시작
줄에 P1밖에 없으니 바로 실행된다. 비선점형이라 우선순위가 더 높은 프로세스가 와도 P1은 끝까지 실행된다.
2 / 6
1~3ms: P2·P3·P4가 줄을 섬
P2(우선순위 2)가 1ms에, P3(우선순위 1)가 2ms에, P4(우선순위 4)가 3ms에 도착했다. P3는 P1보다 우선순위가 높지만 P1이 끝날 때까지 기다린다.
3 / 6
5ms: 우선순위가 가장 높은 P3 실행
P1이 끝나서 다음을 고른다. 우선순위가 가장 높은(숫자가 가장 작은) P3가 실행된다. 실행 시간이 8ms로 가장 길어도 우선순위가 먼저다.
4 / 6
13ms: P3가 끝나고 P2 실행
남은 P2(우선순위 2)와 P4(우선순위 4) 중 P2가 실행된다. P2는 1ms에 와서 13ms까지 12ms를 기다렸다.
5 / 6
16ms: P2가 끝나고 P4 실행
우선순위가 가장 낮은 P4는 3ms에 와서 16ms까지 13ms를 기다렸다. 우선순위가 높은 프로세스가 계속 들어오면 P4는 한없이 밀릴 수 있다(기아). 그래서 오래 기다린 프로세스의 우선순위를 조금씩 올려 주기도 한다(에이징).
6 / 6
18ms: 모두 끝남
기다린 시간은 P1 0ms, P2 12ms, P3 3ms, P4 13ms로 평균 7ms다. 중요한 P3를 먼저 처리한 대신 평균은 FCFS(5.75ms)보다 길다. 우선순위 스케줄링은 선점형으로도 쓴다. 그때는 우선순위가 더 높은 프로세스가 오면 실행 중인 프로세스를 멈추고 그 프로세스부터 실행한다.