FCFS 스케줄링과 비슷하지만 preemption이 추가되었다.
A small unit of time, called a time quantum or time slice, is defined.
time quantum : 일반적으로 10 ~ 100ms
ready queue는 circular queue처럼 취급된다.
CPU scheduler는 ready queue를 순회하면서 1 time quantum 동안 각 프로세스에게 CPU를 할당해준다.
RR scheduling을 위해서 우선 ready queue를 FIFO를 통해 구현한다.
새 프로세스들은 ready queue의 tail에 추가된다.
CPU scheduler는 ready queue에서 첫 번째 프로세스를 골라서 timer가 1 time quantum 이후에 interrupt하게끔 설정하고 process를 dispatch한다.
두 가지 경우가 일어나게 된다.
이 작업을 원형 큐를 돌면서 다음 프로세스 -> 다음 프로세스 -> ...의 과정을 반복한다.
예시 : time quantum = 4ms인 경우
하나의 프로세스가 1 time quantum보다 더 큰 CPU burst를 가지면, 자동으로 interrupt가 발생하므로 RR은 preemptive algorithm이라고 할 수 있다.
RR algorithm의 퍼포먼스는 time quantum의 사이즈에 많이 의존한다. 만약 time quantum이 매우 크면, RR policy는 FCFS policy와 같아진다. 반대로 time quantum이 너무 작으면, 너무 많은 context switch가 일어나게 된다.
실제로, 현대 시스템들은 time quantum을 10 ~ 100ms로, context switch 시간을 10s로 설정하고 있으므로, context-switch time은 time quantum에 비해 작은 비율을 가지고 있다.
average turnaround time은 time-quantum size가 증가할수록 줄어들지 않는다.
일반적으로, average turnaround time은 한 프로세스가 single time quantum 안에 끝난다면 개선될 수 있다. 예를 들면, 3개의 프로세스가 10 time units를 가지고, quantum이 1 time unit을 가진다면, average turnaround는 29이다. quantum을 10 time units로 바꾼다면 20으로 줄어들게 된다. context switch까지 고려하면 시간은 더 단축하게 된다. time quantum이 커야 turnaround time이 줄어들지만, 너무 크면 결국 FCFS와 동일하게 되므로 잘 조절해야 한다.
국룰 : CPU burst의 80퍼센트는 time quantum보다 작아야 한다.