준비큐 있는 프로세스에 대해 CPU를 할당하는 방법
여러 프로세스가 동시에 실행되는 것 처럼 보이지만 내부적으로는 여러 프로세스를 짧게 바꿔가면서 실행하여 사용자가 느끼기에는 동시에 실행하는 것 처럼 보인다.
이 작업을 CPU 스케쥴러가 처리한다.
선점(이미 실행되고 있는 프로세스를 뺏는다) vs 비선점(안뺏는다)
스케줄링 알고리즘
- 비선점 스케줄링
* FCFS(First Come First Served)
먼저 들어온 순서대로 처리하는 방식
* SJF(Shortest Job First)
버스트 시간이 짧은 프로세스부터 CPU를 할당한다.
- 선점 스케줄링
* SRT(Shortest Remaining Time)
최단 잔여시간을 우선으로 하는 스케줄링(도착 시간에서 잔여 시간을 비교)
진행 중인 프로세스가 있어도, 최단 잔여시간인 프로세스를 위해 Sleep 시키고 짧은 프로세스를 먼저 할당.
*RR(Round Robin)
모든 프로세스가 같은 우선순위를 가지고 time slice(타임 퀀텀)를 기반으로 스케줄링 한다.
타임퀀텀이 크면 FCFS와 다를게 없고 너무 작으면 불필요한 Context Switch가 많이 일어남.
* Priority Scheduling(우선 순위 스케쥴링)
우선 순위가 높은 프로세스에 CPU를 우선 할당하는 방식의 스케줄링
우선 순위는 시간 제한, 메모리 요구량, 프로세스의 중요성, 자원사용 비용 등에 따라 달라질 수 있다.
우선 순위가 같을 경우, FCFS와 다를게 없다.
정리
CPU 스케쥴러란 준비큐에 있는 프로세스에 대해서 CPU를 할당하는 방법으로 크게 다섯가지가 있다.
FCFS, SJF, SRT, Priority Scheduling, Round Robin
댓글