프로그램이 실행되고자 할 때 CPU에 프로그램을 할당하는 과정
프로세스는 자신의 임무를 모두 수행하고 사라질 때까지 많은 큐를 돌아다닌다.
프로그램은 제한된 CPU를 사용한다. OS는 이러한 프로세스 중 하나를 택하는데
이러한 역할을 담당하는게 스케줄러이다.
자주 사용되는 스케줄러는 장기 스케줄러와 단기 스케줄러이다.
실행 준비가 완료된 프로세스들은 준비큐에 놓인다.
프로세스는 CPU에 할당 받을 때까지 준비큐에서 대기한다.
장기 스케줄러(Long Term Scheduler)
작업 스케줄러, 승인 스케줄러라고도 한다.
디스크 내에서 작업을 어떤 순서로 메모리에 가져올 지 결정한다.
디스크와 같은 저장장치에 작업들을 저장해놓고, 필요할 때 실행할 작업을 작업 큐에서 꺼내 준비 큐를 통해서 메인 메모리에 적재한다.
new -> ready 상태로 전이를 승인하게 된다.
단기 스케줄러(Short Term Scheduler)
CPU 스케줄러라고도 한다.
CPU에게 필요한 데이터를 확보해주고, 메모리에 있는 프로세스 중 하나를 선택하여 CPU를 할당한다. 준비큐에 먼저 도착한 프로세스가 CPU를 할당 받는다.
ready -> running 상태로 전이한다.
중기 스케줄러(Medium Term Scheduler)
시분할 시스템에서 추가로 사용한다. 예를 들면 Unix나 윈도우에서는 장기 스케줄러가 거의 사용되지 않고, 작업이 queue에 들어오면 바로 메모리에 올린다. 이러한 시분할 시스템에서 메모리에 대한 가중을 완화시켜주기 위해 중기 스케줄러가 도입되었다.
메모리에서 CPU를 쓰기 위해 경쟁 프로세스들을 어느정도 제거시킨 뒤, 나중에 다시 메모리로 불러와 중단된 지점부터 다시 실행된다.
큰 차이점은 실행 빈도이다. 단기 스케줄러는 빨라야 한다.
CPU 실행 시간은 밀리초 인데 단기 스케줄러의 실행 시간이 오래 걸린다면 효율이 떨어진다.
반대로 장기 스케줄러는 시스템에서 새로운 작업이 들어오는 시간이 분 단위이다.
장기 스케줄러 실행은 작업이 시스템을 나갈 때만 실행되므로 실행 간격이 상대적으로 길다