시스템이 실행하고자 할 때 프로세서(CPU)를 프로그램에 할당하는 과정
한정된 메모리에 많은 프로세스들이 한꺼번에 메모리에 올라왔을 때, 대용량 메모리(디스크)에 임시로 저장. 어떤 프로세스에 메모리를 할당하여 Ready Queue에 보내는지 결정
cf) 메모리에 프로그램이 너무 많이 올라가도, 너무 적게 올라가도 성능이 좋지 않은 것이다. time sharing system에는 장기 스케줄러가 존재하지 X 따라서 곧바로 메모리에 올라가 ready 상태가 된다.
: CPU와 메모리 사이의 스케줄링을 담당
Ready Queue에 있는 프로세스 중 “어떤 프로세스를 running 시키지?”를 단기 스케줄러가 담당. 실제 프로세스에 CPU를 할당하는 것은 “Dispatcher”가 수행
Suspended
: 외부적인 이유로프로세스가 메모리에서 디스크로 내려간 상태(swap out)
스스로 event를 기다리는 waiting 상태와 달리 외부적인 요인으로 정지되었기 때문에 스스로 다시 동작할 수 없다.
CPU 하나는 동시에 여러 개의 프로세스를 처리할 수 없기 때문에, 한 순간에 어떤 프로세스가 CPU를 사용할 수 있게 하는지 결정하는 정책이다.
→ CPU를 효율적이고 잘 사용하도록 하기
한 프로세스가 CPU를 차지하고 있을 때, 다른 프로세스가 현재 진행중인 프로세스를 중단하고 CPU를 차지할 수 있는 방법
긴급을 요하는 우선 순위를 갖는 시분할 처리, 실시간 처리에 유용
한 프로세스가 CPU를 차지하고 있을 때, 프로세스가 종료하거나 대기상태로 전환해 CPU를 해제할 때 까지 CPU를 점유하는 방법
모든 프로세스에 대해 공정한 처리가 가능하지만 긴급 응답에는 좋지 못하다. 짧은 작업이 긴 작업이 끝날 때 까지 기다려야 하는 문제점(Convoy Effect)이 발생할 수 있다.
*Convoy Effect : 하나의 큰 프로세스가 자원을 오랫동안 점유하여 작은 프로세스들이 자원을 할당받지 못하는 문제
: 큐에 도착한 순서대로 CPU 할당
: 수행시간이 가장 짧다고 판단되는 작업을 먼저 수행
*Starvation: 우선 순위가 작거나 처리시간이 긴 프로세스가 자원을 계속 할당받지 못하는 문제
*Aging: Ready Queue에 있는 프로세스에 나이를 부여. 얼마나 오래 기다렸는가를 고려하여 처리가 긴 프로세스임에도 길다면 자원을 할당.
: Ready Queue에서 우선순위가 높은 프로세스 먼저 CPU를 할당받는 방법
: 프로세스가 자원을 할당받고 동작할 시간을 할당받는 방식. Ready Queue가 원형 큐로 설계되어서 시간을 다 쓰면 OS가 인터럽트를 걸어 현재 PCB가 큐의 가장 뒤로 이동하는 방식
: SJF와 동일하지만 현재 작업할 프로세스보다 시간이 짧은 프로세스가 들어오면 새로운 스케줄링된다.
: 여러 종류의 Ready Queue로 구분하여 각 Ready Queue마다 독자적인 스케줄링 알고리즘을 사용하여 CPU할당.
: MLQ 스케줄링보다 더 고도화된 알고리즘으로, MLQ에서 Starvation이 생길 수 있는 점을 보완한 스케줄링 기법.