입출력 스케줄링

입출력 스케줄링(I/O scheduling)은 운영 체제가 다수의 프로세스들로부터 디스크를 읽거나 쓰려는 요청을 받았을 때, 우선순위를 정해주고 이를 관리하는 것을 말한다.

원리 
디스크 제어기 내에는 디스크 작업에 대한 요청을 저장해 두는 큐가 있다. 이 큐에 있는 작업의 순서를 적절히 조절함으로써 스케줄링이 가능하다.

목표 
입출력 스케줄러에는 입출력 스케줄러의 목표에 따라 수많은 목적이 있다. 일반적인 목표로는 다음과 같다:
 하드 디스크 검색으로 낭비되는 시간을 최소화한다.
 특정한 프로세스의 입출력 요청의 우선 순위를 정한다.
 디스크 대역을 실행 중인 각 프로세스에 할당한다.
 정해진 기한까지 요청을 보증한다.

스케줄링의 종류 
 FCFS 스케줄링(First Come First Served) : 요청이 들어온 순서대로 처리한다.
 SSTF 스케줄링(Shortest Seek Time First) : 현재 디스크의 헤드 위치에서 가장 가까운 실린더에 대한 요청을 우선적으로 처리한다.
 SCAN 스케줄링 : 디스크의 한 쪽 끝에서 반대쪽 끝으로 이동하면서 처리하며, 마지막 실린더에 도착하면 반대 방향으로 스캔을 진행한다.
 C-SCAN 스케줄링 : 디스크의 한 쪽 끝에서 반대쪽 끝으로 이동하면서 처리하며, 마지막 실린더에 도착하면 시작점으로 되돌아간 후 다시 스캔을 진행한다.
 C-LOOK 스케줄링 : C-SCAN에서는 양 끝까지 이동하던 것을 요청된 실린더 중 마지막까지만 이동하는 방식으로 처리한다.
 N단계 SCAN 스케줄링 : SCAN 스케줄링과 같이 진행 방향 상의 요청을 서비스하지만 진행 중에 새로이 추가된 요청은 서비스하지 않고 다음 진행 시에 서비스하는 기법이다.
 에센바흐 기법(Eschenbach scheme) : 탐색 시간 최적화뿐만 아니라 회전 지연 시간도 최적화하고자 하는 최초의 기법이다.(항공 예약시스템을 위해 개발됨)
 SLTF 스케줄링(Shortest Latency Time First) : 회전 지연 시간 최적화를 위한 대표적 알고리즘으로 디스크 헤드가 특정 실린더에 도착하면 그 실린더 내의 여러 트랙에 대한 요청들을 검사한 후 회전 지연 시간이 가장 짧은 요청부터 서비스하는 기법이다.

각주 

운영체제 기술