time slice는 누적되어 처리되는 건가요?

운영체제 공부 중 cpu 할당 관련 여러가지 정책들을 공부하고 있습니다.
제가 궁금한 부분은 Round Robin 방식입니다.
Round Robin은 time slice를 대기 중에 있는 프로세스에게 할당하고 그 시간 만료되면 fetch해서 다음 프로세스에게 주는 방식으로 이루어지는데요. 여기서 문제는 os가 할당한 time slice만큼 사용하지 않고 다양한 인터럽트 발생으로 다음 프로세스에게 cpu를 양보하는 상황입니다.
처음에는 time slice라는 게 한번 할당하고 다음에 동일한 프로세스가 오면 그 전에 이 프로세스가 어떻게 time slice를 사용했는지와 무관하게, 일괄적으로 또 새롭게 할당하는 줄 알았습니다.
예를 들면 (말도 안되지만) time slice를 10초라고 준다고 했을 때 A라는 process가 I/O 요청으로 7만 사용하고 3은 반납했습니다.
이후 다른 여러개의 프로세스가 time slice를 꽉꽉 채우고 다시 A한테 돌아왔을 때 A가 그 전에 time slice를 어떻게 사용했는지는 관련없이 10을 또 새롭게 할당하는 것으로 생각했습니다.
그런데 제가 가지고 있는 자료를 읽다보니 위의 시나리오가 아니라 이전에 사용하고 남은 time slice를 사용하는 것 같더군요.
예를 가지고 설명하지만 A 차례로 돌아왔을 때 이전 A가 3을 남겨뒀기 때문에 3만 사용하고 context switch가 일어나는 것이죠.
말이 길어진 것 같은데 time slice는 남은 시간이 무효화가 되는 게 아니라 다음 번 차례에 왔을 때 주는 걸로 이해해하는 게 맞나요?
댓글 달기