운영체제에서 여러 프로세스들 사이에 CPU 사용의 우선순위를 부여하고, 어떤 프로세스에게 CPU를 할당할 것인지를 결정하는 작업
=> 즉, CPU를 잘 사용하기 위해 '프로세스'들을 어떻게 배정할 것인지를 결정하는 작업이다
< 프로세스를 스케줄링 하기 위한 Queue 종류>
- Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합
- Ready Queue : 현재 메모리 내에 있으면서 CPU 를 잡아서 실행되기를 기다리는 프로세스의 집합
- Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합
스케줄링을 수행해주는 컴포넌트를 '스케줄러'라고 한다.
프로세스에게 공정한 CPU 접근 기회를 제공하며, 시스템의 전반적인 성능과 효율성을 향상
- 승인 (Admitted)
프로세스 생성이 가능하여 승인됨.- 스케줄러 디스패치 (Scheduler Dispatch)
준비 상태에 있는 프로세스 중 하나를 선택하여 실행시키는 것.- 인터럽트 (Interrupt)
예외, 입출력, 이벤트 등이 발생하여 현재 실행 중인 프로세스를 준비 상태로 바꾸고, 해당 작업을 먼저 처리하는 것.- 입출력 또는 이벤트 대기 (I/O or Event wait)
실행 중인 프로세스가 입출력이나 이벤트를 처리해야 하는 경우, 입출력/이벤트가 모두 끝날 때까지 대기 상태로 만드는 것.- 입출력 또는 이벤트 완료 (I/O or Event Completion)
입출력/이벤트가 끝난 프로세스를 준비 상태로 전환하여 스케줄러에 의해 선택될 수 있도록 만드는 것
어떤 프로세스를 메모리를 할당해 Ready Queue로 적재할지 결정하는 역할을 합니다. 이를 통해 동시에 실행될 프로세스의 수를 제어합니다.
- 메모리와 - 디스크 사이의 스케줄링 담당
- 프로세스의 상태 (new -> ready(in memory))
CPU가 할당될 프로세스를 선택합니다. 이는 매우 빠른 주기로 실행되며, 컨텍스트 스위칭을 수행합니다.
- Ready Queue 에 존재하는 프로세스 중 어떤 프로세스를 running 시킬지 결정.
- CPU - 메모리 사이의 스케줄링 담당
- ready -> running -> waiting -> ready
현재 실행 중인 프로세스를 일시 중단(swap out)하고 메모리를 확보하기 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄
- ready -> stopped
현재 CPU를 사용하고 있는 프로세스를 중단시키고, 다른 프로세스에게 CPU를 할당할 수 있는 스케줄링 방식
(장점) 작업을 빠르게 처리
(단점) '컨텍스트 스위칭 오버헤드' 발생이 생길 수 있다.
한 번 CPU를 할당받은 프로세스가 자발적으로 CPU를 반납하거나 작업을 완료할 때까지 CPU를 계속 사용하는 스케줄링 방식
(장점) 강제로 프로세스를 중단하지 않아-> '컨텍스트 스위칭 오버헤드'가 적다
(단점) '기아 상태' 발생 위험이 있다.
->(오랫동안 cpu에 점유하는 작업에 의해서)
Round Robin (현대적인 스케줄링)
SRTF
다단계 큐(Multilevel Queue)
다단계 피드백 큐(Multilevel Feedback Queue)