Computer Science/Operating System

[운영체제] 선점형/비선점형 스케쥴러

HJChung 2021. 2. 6. 19:35

1. 비선점형 스케쥴러(Non-preemptive Scheduling)

하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음

예를 들어, CPU에 있는 A프로세스의 상태가 자체적으로 block되거나, terminated되어야만, 그제서야 스케쥴러가 B프로세스가 실행 시킬 수 있다.즉,스케쥴러가 CPU에 있는 프로세스를 선점,제어 할 수 없다.

 

그림으로 비선점형 스케쥴러가 작동하는 방식을 보면, 

1
2
3
4
5

2. 선점형 스케쥴러(Preemptive Scheduling):

하나의 프로세스가 다른 프로세스 대신에 프로세서(CPU)를 차지할 수 있음. 즉, 프로세스 상태가 running 중에도 스케쥴러가 이를 중단(ready) 시키고, 다른 프로세스로 교체할 수 있다. 

예를 들어, 시분할 시스템같은 경우, CPU에 있는 A프로세스가 실행된 일정 시간이 지나면  스케쥴러가 이를 선점하여 ready 상태로 변화시키고 B프로세스가 실행될 수 있게 한다. 

 

선점형 스케쥴러인 경우는 위의 비선점형일 때와 진행이 어떻게 달라지는지 보자.

1
2
3

3. 스케쥴링 알고리즘의 조합

지금까지 비선점형 스케쥴러와 선점형 스케쥴러의 작동방식 차이에 대해서 정리해보았다. 

전에 배운 스케쥴러의 여러 (정책) 알고리즘(FIFO(FCFS), SJF, Priority-based, RoundRobin) 

여기서 FIFO(FCFS), SJF, Priority-based는 어떤 프로세스를 먼저 실행시킬지에 중점을 맞춘 알고리즘이기 때문에 비선점형 스케쥴러에 가깝다. 반면 RoundRobin은 시분할 시스템을 위한 기본 알고리즘이기 때문에 선점형 스케쥴러 방식에 가깝다.

 

요즘에는 이러한 것들을 모두 혼합하여서 스케쥴링 알고리즘을 작성하는 것이 일반적이다.