CS/OS

[운영체제] 프로세스 스케줄링

F12:) 2023. 12. 10. 17:56

오늘은 프로세스 스케줄링에 대해서 다뤄보겠습니다.

 

 

   프로세스 스케줄링의 종류

우리는 지금까지 어떠한 프로세스가 ready에서 run으로 변경될 지, 어떤 run 상태의 프로세스를 block시킬지, 어떤 프로세스를 swap out, swap in 할지와 같은 프로세스를 선택하는 과정을 프로세스 스케줄링이라고 하였습니다.

 

하지만 엄밀히 따지면 프로세스 스케줄링은 크게 3가지로 분류할 수 있으며, 여기에 I/O 장치가 받은 입출력 명령에 대해서 어떤 것을 우선 실행할지 결정하는 I/O 스케줄링까지 합해서 총 4가지의 스케줄링이 있습니다.

 

프로세스의 스케줄링은 스케줄러가 실행되는 주기의 길이에 따라 Long-term, Medium-term, Short-term으로 나뉘게 됩니다.

 

  Long-term Scheduling

Long-term Scheduling은 실행되는 주기가 다른 스케줄러의 주기보다 깁니다. 해당 스케줄러는 New 상태로 생성된 프로세스 중에서 어느 프로세스를 Ready 상태로 메모리에 로드할 지를 결정해줍니다.

 

 

  Medium-term Scheduling

Medium-term Scheduling은 메모리에 너무 많은 프로세스를 적재하여 쓰레싱과 같은 문제가 발생하는 것을 방지하기 위해 swap하는 과정에서 어느 프로세스를 swap out할 것인지와 같은 결정해줍니다.

 

 

  Short-term Scheduling

Short-term Scheduling은 Ready 상태의 프로세스 중 어느 것을 run시킬 지를 결정하는 것입니다. 즉, 우리가 통상 부르는 스케줄러는 Short-term Scheduling이 되겠습니다.

 

 

프로세스 상태도에서 스케줄러에 해당하는 부분을 채워넣은 그림입니다. long-term은 admit 시점에 관여하고, mid-term은 swap 과정, short-term은 dispatch 과정에 해당하는 것을 알 수 있습니다.

 

   스케줄러가 실행되는 이유

스케줄러는 아래의 4가지 경우에 실행됩니다.

  1. 실행 중이던 프로세스가 종료되었을 때
  2. I/O나 어떠한 자원을 요청하여 run에서 block 상태로 변경되었을 때
  3. time slice가 다 되어서 run에서 ready 상태로 변경되었을 때
  4. block 상태에서 ready로 바뀌거나 새로운 프로세스가 ready로 들어오게 될 때

 

위의 3, 4번 과정은 preemptive하다고 말합니다. 

 

preemptive는 현재 진행 중인 프로세스에게서 CPU 할당을 빼앗아 자신이 실행하게 되는 것을 의미합니다. 3, 4에서 만약 우선순위가 높은 프로세스가 ready queue로 들어온다면, 현재 진행 중인 프로세스가 CPU를 빼앗기는 상황이 발생할 수 있기 때문이죠.

 

 


 

지금까지 프로세스 스케줄링의 종류에 대해서 알아봤습니다. 다음 글에서는 스케줄러 중 Short-term Scheduler의 프로세스 선택 방법에 대해서 다뤄보겠습니다. 감사합니다.