OS

[운영체제] 선점형 스케줄링 vs 비선점형 스케줄링

sagecode 2025. 6. 8. 15:23

CPU 스케줄러는 CPU 스케줄링 알고리즘에 따라 프로세스에서 해야 하는 일을 스레드 단위로 CPU에 할당한다.

 

프로그램이 실행될 때는 CPU 스케줄링 알고리즘이 어떤 프로그램에 CPU 소유권을 줄 것인지 결정한다. 이 알고리즘은 CPU 이용률은 높게, 주어진 시간에 많은 일을 하도록 준비 큐에 있는 프로세스는 적게, 응답 시간은 짧게 설정하는 것을 목표로 한다.

 

비선점형 방식

비선점형 방식(non-preemptive)는 프로세스가 스스로 CPU 소유권을 포기하는 방식이며, 강제로 프로세스를 중지하지 않는다. 더 쉽게 이야기 해서 한 번 CPU를 할당받은 프로세스는 자발적으로 CPU를 반환할 때까지 계속 실행된다. 이 작업은 CPU의 소유권이 중간에 넘어가는 일이 없기(강제 종료) 때문에 자원의 상태에 대한 일관성이 있으며 불일치가 적다. 또한, Context Switching에 의한 부하가 적다.

 

FCFS(First Come, First Served)

가장 먼저 온 것을 가장 먼저 처리하는 알고리즘이다. 길게 수행되는 프로세스 때문에 '준비 큐에서 오래 기다리는 현상'이 발생하는 단점이 있다.

 

SJF(Shortest Job First)

실행시간이 가장 짧은 프로세스를 가장 먼저 실행하는 알고리즘이다. 긴 시간을 가진 프로세스가 늦게 또는 실행되지 않는 현상이 일어나며 평균 대기 시간이 가장 짧다.

 

선점형 방식

선점형 방식(preemptive)은 현대 운영체제가 쓰는 방식으로 지금 사용하고 있는 프로세스를 알고리즘에 의해 중단시켜 버리고 강제로 다른 프로세스에 CPU 소유권을 할당하는 방식을 말한다.

 

라운드 로빈(RR)

라운드 로빈 방식은 각 프로세스가 동일한 할당 시간을 주고 그 시간 안에 끝나지 않으면 다시 준비 큐의 뒤로 가는 알고리즘이다. 일반적으로 전체 작업시간은 길어지지만 평균 응답 시간은 짧아진다는 특징이 있다. 이 알고리즘은 로드밸런서에서 트래픽 분산 알고리즘으로도 쓰인다.

 

SRF(Shortest Remaining Time First)

SJF는 중간에 실행 시간이 더 짧은 작업이 들어와도 기존 짧은 작업을 모두 수행하고 그 다음 짧은 작업을 이어나가는데, SRF는 중간에 더 짧은 작업이 들어오면 수행하던 프로세스를 중지하고 해당 프로세스를 수행하는 알고리즘이다.

 

다단계 큐

다단계 큐는 우선순위에 따른 준비 큐를 여러 개 사용하고, 큐마다 라운드 로빈이나 FCFS 등 다른 스케줄링 알고리즘을 적용한 것을 말한다. 큐 간의 프로세스 이동이 안되므로 스케줄링 부담이 적지만 유연성이 떨어지는 특징이 있다.