하드 디스크는 고속으로 회전하는 디스크의 표면에 데이터를 저장한다. 데이터는 동심원으로 된 트랙에 저장되는데, 하드 디스크는 트랙을 여러 개의 섹터로 미리 구획하고, 트랙을 오가는 헤드를 통해 섹터 단위로 읽기와 쓰기를 수행한다. 하드 디스크에서 데이터 입출력 요청을 완료하는 데 걸리는 시간을 접근 시간이라고 하며, 이는 하드 디스크의 성능을 결정하는 기준 중 하나가 된다. 접근 시간은 원하는 트랙까지 헤드가 이동하는 데 소요되는 탐색 시간과, 트랙 위에서 해당 섹터가 헤드의 위치까지 회전해 오는 데 걸리는 대기 시간의 합이다. 하드 디스크의 제어기는 ‘디스크 스케줄링’을 통해 접근 시간이 최소가 되도록 한다.
200개의 트랙이 있고 가장 안쪽의 트랙이 0번인 하드 디스크를 생각해 보자. 현재 헤드가 54번 트랙에 있고 대기 큐*에는 ‘99, 35, 123, 15, 66’ 트랙에 대한 처리 요청이 들어와 있다고 가정하자. 요청 순서대로 데이터를 처리하는 방법을 FCFS 스케줄링이라 하며, 이때 헤드는 ‘54 → 99 → 35 → 123 →15 → 66’과 같은 순서로 이동하여 데이터를 처리하므로 헤드의 총 이동 거리는 356이 된다.
만일 헤드가 현재 위치로부터 이동 거리가 가장 가까운 트랙 순서로 이동하면 ‘54 → 66 → 35 → 15 → 99 → 123’의 순서가 되므로, 이때 헤드의 총 이동 거리는 171로 줄어든다. 이러한 방식을 SSTF 스케줄링이라 한다. 이 방법을 사용하면 FCFS 스케줄링에 비해 헤드의 이동 거리가 짧아 탐색 시간이 줄어든다. 하지만 현재 헤드 위치로부터 가까운 트랙에 대한 데이터 처리 요청이 계속 들어오면 먼 트랙에 대한 요청들의 처리가 계속 미뤄지는 문제가 발생할 수 있다.
이러한 SSTF 스케줄링의 단점을 개선한 방식이 SCAN 스케줄링이다. SCAN 스케줄링은 헤드가 디스크의 양 끝을 오가면서 이동 경로 위에 포함된 모든 대기 큐에 있는 트랙에 대한 요청을 처리하는 방식이다. 위의 예에서 헤드가 현재 위치에서 트랙 0번 방향으로 이동한다면 ‘54 → 35 → 15 → 0 → 66 → 99 →123’의 순서로 처리되며, 이때 헤드의 총 이동 거리는 177이 된다. 이 방법을 쓰면 현재 헤드 위치에서 멀리 떨어진 트랙이라도 최소한 다음 이동 경로에는 포함되므로 처리가 지나치게 늦어지는 것을 막을 수 있다. SCAN 스케줄링을 개선한 LOOK 스케줄링은 현재 위치로부터 이동 방향에 따라 대기 큐에 있는 트랙의 최솟값과 최댓값 사이에서만 헤드가 이동함으로써 SCAN 스케줄링에서 불필요하게 양 끝까지 헤드가 이동하는 데 걸리는 시간을 없애 탐색 시간을 더욱 줄인다.
* 대기 큐 : 하드 디스크에 대한 데이터 입출력 처리 요청을 임시로 저장하는 곳.
2013학년도 6월 모평