업데이트:

스케줄러, Scheduler

스케줄러는 한정적인 메모리를 여러 프로세스가 효율적으로 사용할 수 있도록 어떤 프로세스에게 메모리를 할당할 지 선택하는 역할을 담당한다.

스케줄링 큐, Scheduling Queues

프로세스를 스케줄링하기 위한 큐에는 아래 세 가지가 있다.

▪️ Job(batch) Queue : 현재 시스템 내에 있는 모든 프로세스의 집합

▪️ Ready Queue : 현재 메모리 내에 있는 Ready 상태 프로세스의 집합

▪️ Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합

다시 말해 스케줄러는 각각의 큐에 프로세스들을 넣고 빼주는 역할을 한다.

💡 스케줄링? 어떤 시점에 어떤 프로세스에게 자원을 할당할 지 결정하는 작업

스케줄러 종류

스케줄러는 역할과 목적에 따라 단기, 중기, 장기 스케줄러로 구분된다.

장기 스케줄러, Long-term scheduler / 잡 스케줄러, Job scheduler


한정된 메모리에 많은 프로세스들이 한 번에 올라올 경우 (디스크와 같은) 대용량 메모리에 저장되는데, 이 중 어떤 프로세스에 메모리를 할당하여 Job Queue에서 Ready Queue로 보낼지 결정한다. 스케줄링이 발생하는 시간이 비교적 오래걸리기 때문에 장기 스케줄러라고 한다.

▪️ 디스크와 메모리 사이의 스케줄링을 담당

▪️ 디스크 내의 작업을 어떤 순서로 메모리에 적재할지 결정

▪️ new(디스크) → ready(메모리) 상태 전이

▪️ degree of Multiprogramming (실행중인 프로세스 수) 제어

▪️ 연산 비중이 높은 프로세스와 입출력 비중이 높은 프로세스의 균형을 맞춤

단기 스케줄러, Short-term scheduler / CPU 스케줄러, CPU scheduler


스케줄링이 발생하는 시간이 매우 짧아 단기 스케줄러라고 하며 CPU가 점유하는 순서를 정해준다.

▪️ 메모리와 CPU 사이의 스케줄링을 담당

▪️ Ready Queue에 존재하는 프로세스 중 어떤 프로세스를 running 시킬지 결정

— 이때, 실제 프로세스에 자원을 할당하는 것은 Dispatcher가 수행한다.

▪️ ready → running 상태 전이

중기 스케줄러, Mid-term scheduler / 스와퍼, Swapper


장기 스케줄러보다 자주, 단기 스케줄러보다 덜 발생하는 스케줄러이다. 주기적으로 메인 메모리의 전체 프로세스를 검사하여 보조기억장치로 옮길 프로세스를 찾아 옮긴다.

▪️ 메모리에 너무 많은 프로그램이 동시에 올라가는 것을 조절

▪️ 메모리 여유 공간을 위해 프로세스를 메모리에서 디스크로 쫓아냄 (Swapping)

▪️ ready → suspended 상태 전이

▪️ 프로세스에게서 메모리 할당 해제

💡 Swapping? 프로세스를 메모리에서 디스크로 내리고(swap out) 디스크에서 메모리로 올리는(swap in) 기법

댓글남기기