: 프로세스에게 CPU 등의 자원을 적절히 배정하는 것
Queue: 프로세스 스케줄링에 사용되는 큐
- Job Queue: 현재 시스템 내의 모든 프로세스 집합
- Ready Queue: 현재 메모리 내에 있고, CPU 할당을 기다리고 있는 프로세스 집합
- Device Queue: Device I/O 작업을 대기하고 있는 프로세스 집합
장기 스케줄러
: 어떤 프로세스를 Ready Queue(메모리)로 보낼지 결정. swap-in
- 메모리와 디스크 사이 스케줄링
- 일단 많은 프로세스가 한번에 올라오면, 대용량 메모리(디스크)에 임시로 저장되고, 이걸 적절히 메모리로 올려야 함.
- 메모리는 한정되어있기 때문에 적절한 스케줄링 필요
- 실행중인 프로세스 수 제어하는 역할(degree of Multi-programming)
new -> ready
상태
단기 스케줄러
: 어떤 프로세스를 실행할지(Running) 결정. 따라서, 프로세스에 CPU 를 할당(scheduler dispatch)
- CPU 와 메모리 사이 스케줄링
- Ready Queue에 존재하는 프로세스 중 어떤 프로세스를 running 시킬지
ready -> running -> waiting -> ready
중기 스케줄러
: 어떤 프로세스를 메모리에서 디스크로 쫓아낼지 결정
- 메모리 공간 확보를 위해 디스크로 swap-out
- 프로세스에게서 memory를 deallocate
- 실행중인 프로세스 수 제어하는 역할(degree of Multi-programming)
ready -> suspended
(job queue로?)- 대부분의 OS에서는 우선순위 알고리즘이나 Round Robin 혼합해서 사용한다고 함
Reference)
https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/OS#cpu-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%9F%AC