Skip to content
Jang HyungSuk edited this page Jan 24, 2022 · 1 revision

Process Scheduling - RR

운영체제 스터디를 진행하면서 정리했었던 CPU Scheduling (= Process Scheduling)에 대해서 다시 한 번 정리해보려고 한다.


왜 Process Scheduling을 해야 하는 것일까?

사전 지식

  • 모든 프로세스는 CPU → I/O 작업 → CPU → I/O 작업 → CPU → ... 작업을 반복한다.
  • CPU 사용할 때는 CPU burst 라고 하고 CPU를 사용한 시간을 CPU burst Time이라고 한다.
  • I/O 작업을 하는 경우에는 I/O burst 라고 한다.

CPU-burstTime 출처

일반적으로 사람과 상호작용하는(I/O작업이 많은) 프로세스는 CPU를 굉장히 짧게 사용하고 CPU를 사용하는 빈도가 잦다. 이런 프로세스들을 I/O bound job이라고 한다.

하지만 유전자 염기서열 계산하는 프로세스 또는 딥러닝 연산중인 프로세스와 같이 일부 프로세스들은 I/O 작업 없이 CPU만을 주구장창 사용하는 경우가 있다. 이런 프로세스들은 CPU bound job이라고 한다.


본론으로 돌아와서 왜 Process Scheduling이 필요한지 알아보자.

CPU를 짧게 쓰는 I/O bound job과 CPU를 길게 쓰는 CPU bound job을 효율적으로 관리하기 위해서 Process Scheduling을 하는 것이다. 서로 성질이 다른 애들을 효율적으로 관리하려는 것이다.

보통 사용자와 상호작용을 하는 I/O bound job에게 더 자주 CPU를 할당해주는데 이는 사람이 I/O 작업을 완료했을 때 프로세스가 CPU를 할당받지 못하고 계속 ready 상태로 기다리게 되면 사용자가 답답함을 느끼기 때문이다. 결국 사용자는 프로그램이 멈춰서 렉에 걸린 것 처럼 느낄 것이다. 이러한 것을 방지하고자 Process Scheduling을 통해 효율적으로 프로세스들을 관리하는 것이다.


그러면 어떻게 효율적으로 프로세스를 관리해야 할까?

Process Scheduling을 위해서는 2가지를 고려해야 한다.

  1. 어떤 프로세스에게 우선권을 줄 것인가?
  2. 언제 프로세스에게 CPU를 뺏을 것인가?

현재 미션에 나온 RR(Round Robin) 방식으로 Process Scheduling을 하는 것으로 설명해보려고 한다.

먼저 RR의 경우 현재 많은 OS가 쓰고 있는 Process scheduling의 기반이다. Ready Queue에 프로세스들을 순서대로 넣어 놓고 먼저 온 애들부터 일정한 시간(quantum)동안 CPU를 할당해주고 일정한 시간이 넘으면 강제(preemptive)로 CPU를 뺏어서 다음 Ready Queue에서 기다리는 프로세스에게 CPU를 주는 방식인 Process scheduling 방법이다.

  1. 어떤 프로세스에게 우선권을 줄 것인가?
    • 먼저 들어온 프로세스에게 우선권을 줌
  2. 언제 프로세스에게 CPU를 뺏을 것인가?
    • 일정한 시간(quantum)이 지나도 CPU반환을 하지 않으면 강제로 뺏음(Timer가 interrupt를 통해 뺏음)
Clone this wiki locally