[OS] CPU scheduling

CPU Scheduling

CPU 스케쥴링의 목표는 시스템을 효율적이고 빠르고 공평하게 만드는 것이다. CPU스케쥴링은 다음과 같은 상황에서 발생할 수 있다.

  1. 한 프로세스가 Running에서 Waiting으로 전환될 때
  2. 프로세스가 Running에서 Ready로 전환될 때
  3. 프로세스가 Waiting에서 Ready로 전환될 때
  4. 프로세스가 Terminate상태가 될 때

비선점형 스케쥴링

프로세스가 CPU를 점유하고 있는 중에 다른 프로세스에게 CPU 제어권을 뺏기지 않는다. 위의 상황에서 1번과 4번의 상황에서만 스케쥴링이 발생한다.

선점형 스케쥴링

프로세스가 CPU를 점유하고 있는 중에 다른 프로세스에게 CPU 제어권을 뺏긴다. 위의 상황 모두에서 스케쥴링이 발생한다.

Dispatcher

디스패처는 CPU의 제어권을 단시 스케쥴러가 선택한 프로세스에게 주는 모듈이다. 디스패처는 다음과 같은 작업을 포함한다.

  1. Context Switching
  2. User Mode로의 전환
  3. 프로그램을 다시 시작하기 위해 사용자 프로그램의 적절한 위치로 Jump
Author: Song Hayoung
Link: https://songhayoung.github.io/2020/07/21/OS/cpu-scheduling/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.