기본적으로 FIFO는 First-In-First-Out, 즉 먼저 들어온 job이 먼저 실행되고, SJF은 Shortest-Job-First, 즉 해당 시점에서 가장 짧은 실행 시간을 가지는 job을 끝까지 실행한 후 다른 job을 실행한다.
다만, 이번 경우에는 시간 0에 200 길이의 job 3개가 동시에 들어오므로 둘 간의 동작 차이는 없다. job을 차례대로 A, B, C라고 한다면 A는 0~200에, B는 200~400에, C는 400~600 시간에 동작이 일어난다.
결국, job이 들어온 순간부터 실행을 시작하기까지 걸린 시간인 response time은 각각 0, 200, 400이며, 실행을 마치기까지 걸리는 시간인 turnaround time은 각각 200, 400, 600이다.
이제 답을 확인하기 위해 scheduler.py가 어떻게 동작하는지 확인하자.

-l를 통해 job list를 넣어 줄 수 있으며, -p로 policy를 지정할 수 있다.

FIFO policy에 따른 실행 결과

SJF policy에 따른 실행 결과
두 경우 모두 예상과 같은 답이 나왔다.
이번에는 job이 어떤 순서로 들어오는지에 따라 다른 답이 나올 수 있다. 아주 약간의 시간차를 두고 100 → 200 → 300 순서대로 job이 들어온다면 SJF과 FIFO 모두 100 → 200 → 300 순서로 job을 실행할 것이지만, 반대로 300 → 200 → 100이 약간의 시간차로 들어온다면 SJF은 가장 짧은 job 순서대로 100 → 200 → 300으로 실행하지만, FIFO는 들어온 순서 그대로 실행할 것이다.
문제에서 100, 200, 300 순으로 job을 주었으므로 100 → 200 → 300으로 생각해 보자. SJF과 FIFO 모두 0~100, 100~300, 300~600 동안 각각의 job을 실행하므로, response time은 0, 100, 300, turnaround time은 100, 300, 600이 된다.

FIFO policy에 따른 실행 결과

SJF policy에 따른 실행 결과
예상과 같은 답을 얻을 수 있다.
RR Scheduler는 timeslice 만큼 각 job을 번갈아가며 실행한다. 즉, 100 길이의 A, 200 길이의 B, 300 길이의 C가 거의 동시에 들어왔으므로, 초기에는 ABC를 timeslice 만큼 번갈아 실행하다가, A의 실행이 끝나면 BC만, B마저 끝나면 C만을 실행한다.
따라서, timeslice를 1로 주었을 때 실제 실행은 (0)ABC…ABC(300)BCBC…BC(500)CC..CC(600) 형태가 될 것이다. 즉, A는 0에 시작해 298에 종료되고, B는 1~499, C는 2~600 시간에 실행된다.