CPU 스케줄러는 CPU스케줄링 알고리즘에 따라서 프로세스에서 해야 하는 일을 스레드 단위로 CPU에 할당한다.
최고의 성능을 내기 위해서 자원을 어떤 프로세스에 얼마나 할당하는지 정책을 만드는 것
CPU 스케줄링 알고리즘의 목표는 CPU이용률은 높게, 주어진 시간에 많은 일을 하게, 준비 큐(ready queue)에 있는 프로세스는 적게, 응답 시간은 짧게 설정하는 것을 목표로 한다.
CPU 스케줄링 알고리즘
가장 먼저 온 것을 가장 먼저 처리하는 알고리즘
수행시간이 긴 프로세스는 준비큐에서 오래 기다릴 수도 있다는 문제점이 있습니다. 이 현상을 convoy effect라고 합니다.
실행 시간이 가장 짧은 프로세스를 가장 먼저 실행하는 알고리즘
긴 시간을 가진 프로세스가 실행되지 않는 현상(starvation)이 발생하고 평균 대기 시간이 가장 짧습니다.
실제로는 실행 시간을 알기 어렵기 때문에 과거의 실행 시간을 토대로 추측해서 사용합니다.
오래된 작업일수록 우선순위를 높이는(aging)방법 을 통해서 SJF가 긴 실행 시간을 가진 프로세스가 실행되지 않는다는 단점을 보완한 알고리즘
우선순위 스케줄링의 일종
각 프로세스는 동일한 할당 시간을 주고 그 시간 안에 끝나지 않으면 다시 준비 큐의 뒤로 가는 알고리즘
할당 시간이 너무 클 경우 : FCFS알고리즘 처럼 작동한다.
할당 시간이 너무 짧을 경우 : 컨텍스트 스위칭이 잦아져서 오버헤드(비용이)가 커진다.
Shortest Remaining Time Fist 알고리즘
SJF와는 다르게, 중간에 실행 시간이 더 짧은 작업이 들어오면 수행하던 프로세스를 중지하고 해당 프로세스를 수행하는 알고리즘
우선순위에 따른 준비 큐를 여러 개 사용하고 큐마다 라운드 로빈이나 FCFS등 다른 스케줄링 알고리즘을 적용한 것
큐 간의 프로세스 이동이 안되니까 스케줄링 부담이 적지만 유연성이 떨어진다는 특징이 있다.
[O/S] CPU 스케줄링 알고리즘 (CPU Scheduling Algorithm)
[IT 기술면접 준비자료] CPU 스케줄링 기법 (선점 스케줄링, 비선점 스케줄링)
출처: https://preamtree.tistory.com/19 [Preamtree의 행복로그:티스토리]
책 - 면접을 위한 CS 전공지식 노트