CPU 스케줄링이란?
CPU 스케줄링은 다수의 프로세스가 CPU 자원을 공유할 때 실행 순서를 관리하는 방법이다. 이 스케줄링은 프로세스의 우선순위, 대기 시간, 및 도착 시간을 고려하여 CPU에 할당되는 순서를 결정하며, 효율적인 자원 활용과 응답 시간 최소화를 목표로 한다.
선점 스케줄링 (Preemptive Scheduling) | 비선점 스케줄링 (Non-preemptive Scheduling) | |
---|---|---|
응답 시간 | 짧음 | 상대적으로 길음 |
프로세스 중단 | 가능 | 불가능 |
작업 완료 시간 예측 | 어려움 | 쉬움 |
작업 간 경쟁 | 발생함 | 발생하지 않음 |
대표적인 알고리즘 | 라운드 로빈, 우선 순위, 다단계 큐 등 | FCFS, SJF 등 |
SRT(Shortest Remaining Time)
현재 실행 중인 프로세스의 남은 시간과 대기 큐에 프로세스의 실행시간이 가장 짧은 프로세스에게 CPU를 할당하는 기법 (비선점 기법인 SJF 알고리즘의 선점 형태로 변경한 기법) 평균 대기 시간을 최소화하는 데 효과적이지만, 실행 시간을 정확하게 예측하는 것이 어려워 긴 프로세스가 무한정으로 기다리는 기아 상태(Starvation State) 가 발생할 수 도 있다.
라운드 로빈 (Round Robin)
각 프로세스에 시간 할당량(time quantum) 을 부여하고, 각 프로세스가 할당량을 소비할 때까지 실행된다. 그 후, 다음 프로세스로 넘어가는 방식으로 공평한 CPU 사용을 지향한다. 할당되는 시간이 클 경우 FCFS 기법과 같아지고, 시간이 작을 경우 오버헤드가 자주 발생된다.
우선 순위 (Priority Scheduling)
준비상태 큐에서 기다리는 각 프로세스에 우선순위를 할당하고, 우선순위가 높은 프로세스가 CPU를 선점할 수 있는 방식이다. 이를 통해 중요한 작업이 먼저 처리되도록 한다.
다단계 큐 (MLQ)
프로세스를 특정 그룹으로 분류할 수 있는 경우 그룹에 따라 각기 다른 준비상태 큐를 사용한다. 작업들을 여러 종류의 그룹으로 분할. 큐들간에 프로세스 이동이 불가능하다. 각 큐는 자신만의 독자적인 스케줄링을 가진다. 상위 우선 순위의 큐가 Empty 이면 하위 우선순위의 큐의 프로세스가 수행된다.
다단계 피드백 큐 (MLFQ)
특정 그룹의 준비상태 큐에 들어간 프로세스가 다른 준비상태 큐로 이동할 수 없는 다단계 큐 기법을 준비상태 큐 사이를 이동할 수 있도록 개선한 기법. 새로운 프로세스는 높은 우선순위 큐에서 시작하며, 실행 시간이 길어질수록 낮은 우선순위 큐로 이동한다. 우선순위가 높은 단계의 큐일수록 시간 할당량을 작게 설정된다. Aging(노화) 메커니즘을 사용하여 기아 상태를 방지한다. 현대 OS에서 라운드 로빈 방식과 함께 가장 많이 사용되는 스케줄링 기법.
노화 메커니즘이란?
스케줄링에서 사용되는 기법으로, 일정 시간이나 특정 조건에 따라 우선순위를 조정하거나 증가시키는 방법이다. 주로 다단계 피드백 큐 스케줄링에서 활용되며, 기아 상태(Starvation)를 방지하고 모든 프로세스가 공정하게 CPU 자원을 이용할 수 있도록 한다.
노화 메커니즘의 작동 원리
스케줄러가 다음에 실행할 프로세스를 선택할 때, 우선순위와 노화 값을 함께 고려한다.
노화값은 프로세스의 대기 시간 또는 대기 큐에서 머문 시간에 기반하여 계산하므로 노화 값이 높을수록 프로세스의 우선순위가 증가하므로 오랫동안 대기한 프로세스에게 높은 우선순위를 부여한다.
따라서 오랫동안 대기한 프로세스의 우선순위가 높아져, 해당 프로세스는 상위 우선순위 큐로 이동하여 CPU를 할당받을 기회를 얻게 된다.
FCFS (First-Come, First-Served)
가장 간단한 스케줄링 알고리즘 중 하나로, 먼저 도착한 프로세스가 먼저 CPU를 할당받는다.
응답 시간 예측이 어려워, 긴 프로세스가 먼저 도착하면 기다리는 시간이 길어질 수 있다.
SJF (Shortest Job First)
프로세스의 예상 실행 시간에 따라 우선순위를 정한다. 예상 실행 시간이 가장 짧은 프로세스가 먼저 실행되므로, 대기 시간을 최소화하고 자원을 효율적으로 활용할 수 있다.
but, 사용시간이 긴 프로세스는 거의 영원히 할당을 못받아 기아 상태가 발생할 수도 있다.
HRN (Highest Response ratio)
실행 시간이 긴 프로세스에 불리한 SJF 기법을 보완하기 위한 것으로 우선순위 계산 결과 값이 높은 것부터 우선순위가 부여된다. 대기 시간이 길수록 계산 결과가 높다. 우선순위 = (대기시간 + 서비스시간 / 서비스시간) 큰 프로세스일수록 우선순위가 낮으므로 평균 응답시간도 단축된다.
래퍼런스
https://blog.hexabrain.net/256
https://yoon-dumbo.tistory.com/entry/OS-CPU-%EC%8A%A4%EC%BC%80%EC%A5%B4%EB%9F%AC