CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리하는 작업
선점형 스케줄링과 비선점형 스케줄링으로 유형을 나눌 수 있음
어떤 프로세스에게 자원을 할당할지를 결정하는 운영체제 커널의 코드를 의미함
스케줄러는 역할과 목적에 따라서 3가지로 분류할 수 있음
CPU 스케줄러라고도 하며, 미리 정한 스케줄링 알고리즘에 따라 실행할 프로세스를 선택함
즉, 준비 큐에 존재하는 프로세스 중 어떤 프로세스를 실행할지 결정하고, 선택된 프로세스에게 CPU를 할당함
Swapper라고도 하며, 너무 많은 프로세스에게 메모리를 할당해 시스템의 성능이 저하되는 경우를 대비하기 위해 메모리에 적재된 프로세스 수를 관리함
우선순위가 가장 낮은 프로세스나 일정 시간 동안 활성화되지 않았던 프로세스들을 디스크로 내림
작업 스케줄러라고도 부르며, 디스크에 저장되어 있는 프로그램 중 어떤 프로그램에 메모리를 할당하여 준비 큐로 보낼지 결정하는 역할을 함
즉, 하드 디스크에 있는 프로그램을 메모리에 로드하는 역할을 담당함
But, 현대 운영체제에서는 장기 스케줄러를 두지 않는 경우가 많음
프로세스가 시작되면 장기 스케줄러 없이 바로 그 프로세스에 메모리를 할당해 준비 큐에 넣어주게 됨
하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식 (= 중간에 다른 프로세스가 빼앗는다)
FCFS를 선점형으로 변형한 기법
같은 크기의 시간할당량을 주고, 할당된 시간 내에 완료가 안되면 다시 준비 큐 리스트의 가장 뒤로 보내지며, CPU는 다음 프로세스로 넘어감
시간 할당량이 너무 커지면 FCFS와 비슷해지고, 너무 작아지면 오버헤드가 커짐
가장 짧은 시간이 소요되는 프로세스를 먼저 수행하고, 남은 처리시간이 더 짧은 프로세스가 준비 큐에 생기면 언제라도 그 프로세스가 선점됨
SJF 기법을 선점형으로 구성한 방식으로, 각 프로세스의 실행시간 추적, 선점을 위한 문맥 교환 등 SJF보다 오버헤드가 크다는 단점
각 프로세스마다 우선순위를 설정하고, 우선순위마다 준비 큐를 생성함
항상 가장 높은 우선순위 큐에 있는 프로세스에 CPU를 할당함
즉, 만약 우선순위가 낮은 큐에서 작업이 실행 중이더라도 상위 단계의 큐에 프로세스가 도착하면 CPU를 빼앗음
큐들 간 프로세스 이동이 불가능하기 때문에 유연성이 떨어지며, 우선순위가 낮은 프로세스가 오랫동안 CPU 할당을 기다리는 기아 현상이 발생할 수 있다는 단점
프로세스 생성 시 가장 높은 우선순위 준비 큐에 등록되며, 해당 큐의 CPU 시간 할당량이 끝나면 한 단계 아래의 준비 큐에 들어감
기본적으로 가장 우선순위가 낮은 큐를 제외하고는 RR 스케줄링 방법을 사용함
단계가 내려갈수록 시간 할당량이 증가함
큐 사이 프로세스 이동이 가능하며, 맨 아래 큐에서 너무 오래 대기한 프로세스는 다시 상위 큐로 이동함 (에이징 기법을 통한 기아 상태 예방)
한 프로세스가 CPU를 할당 받으면, 해당 프로세스가 작업을 종료하고 CPU를 반환할 때까지
다른 프로세스는 CPU 점유가 불가능한 방식 (뺏기 불가능)
프로세스 별로 우선순위가 주어지고, 이 우선순위에 따라 CPU를 할당함
동일 우선순위는 FCFS로 처리
주요 긴급 프로세스를 우선적으로 처리하고, 설정이나 자원 상황 등에 따라 우선순위를 선정함
설명 추가 예정
준비 큐에 도착한 순서에 따라 CPU를 할당함
준비 큐에 있는 작업 중 가장 짧은 작업부터 수행함
FIFO보다 평균 대기시간이 감소함
But, CPU 요구시간이 긴 작업과 짧은 작업 간 불평등이 심하여 기아현상이 발생할 수 있음
우선순위 계산 공식을 이용해, 서비스(실행)시간이 짧은 프로세스나 대기시간이 긴 프로세스에게 우선순위를 주어 CPU를 할당하는 기법
https://dev.classmethod.jp/articles/load-balancing-types-and-algorithm/
https://www.samsungsds.com/kr/techreport/job-scheduling.html
https://velog.io/@jinh2352/Linux-8-실시간-태스크-스케줄링-FIFO-RR-DEADLINE
https://ko.wikipedia.org/wiki/최단마감우선_스케줄링
https://damagucci-juice.tistory.com/120
https://haun25ne.tistory.com/55
https://cocoon1787.tistory.com/124
https://taegyunwoo.github.io/os/OS_MultiLayerQueue_MultiProcessor_RealtimeSystem