1. RR(Round Robin)


- Time Sharing System(시분할 시스템)을 위해 설계된 스케줄링이다.
<aside>
💡 시분할 시스템
CPU 스케줄링과 다중 프로그래밍을 이용해서 각 사용자들에게 컴퓨터 자원을 시간적으로 분할하여 사용할 수 있게 해주는 대화식 시스템
</aside>
- 각 프로세스는 동일한 Time Slice 또는 시간 할당량을 받는다.
- 실행 중인 프로세스는 해당 Time Slice가 끝나기 전까지 CPU를 사용할 수 있다.
- Time slice burst가 일어나면 해당 프로세스는 스케줄링 큐의 끝으로 이동한다.
- 이러한 식으로 모든 프로세스가 순환하며 CPU시간을 공평하게 나누어 가진다.
- 여러 작업을 동시에 처리할 때 유용한 방법이다.
- 시간 단위(Time Quantum/Slice)는 각 프로세스에 동일한 부분과 순환 순서로 할당되어 프로세스를 우선 순위 없이 처리한다.
- 보통 시간 단위는 10ms ~ 100ms 정도이고 시간 단위 동안 수행한 프로세스는 준비 큐의 끝으로 밀려나게 된다. 이후 다른 프로세스가 실행된다.
- 문맥 전환의 오버헤드가 큰 반면, 응답 시간이 짧아지는 장점이 있어 실시간 시스템에 유리하며 할당되는 시간이 클 경우 비선점 FIFO 기법과 같아지게 된다.
- 버스트 시간에 의존하지 않기에 간단하고 구현하기 쉬우며 기아 현상이 없다.
- 시계 구동 방식의 하이브리드 모델이며 처리해야 하는 특정 작업에 할당되는 시간 단위는 최소여야 한다. (OS에 따라 다를 수는 있다.)
- 특정 시간 내에 이벤트에 반응하는 실시간 알고리즘이다.
- 실행 대기열의 총 프로세스 수를 알고 있으면 동일한 프로세스에 대해 최악의 응답 시간을 가정할 수 있다.
- OS의 시간 단위가 짧으면 프로세서 출력이 감소한다. 성능은 시간 단위에 크게 좌우된다.
- 더 특별한 작업에 특별한 우선순위를 부여하지 않는다. 즉, 정확한 시간 단위를 찾는 것이 매우 어렵다.
- 컴퓨터 네트워크의 데이터 패킷 스케줄링과 같은 다른 스케줄링 문제에 적용될 수 있다.