1. 개요
하드 디스크 드라이브(HDD)
는 수 세기 동안 컴퓨터 시스템의 영구적
인 데이터 저장소였으며 파일 시스템 기술은 거의 대부분 하드 디스크 드라이브의 동작에 기반을 두고 개발되었다.
2. 인터페이스
모든 현대 드라이브의 기본적인 인터페이스는 단순하다.
드라이브는 읽고 쓸 수 있는 매우 많은 수의 섹터
들로 이루어져 있다.
그렇기 때문에 디스크를 섹터들의 배열로 볼 수 있으며 0부터 n-1이 드라이브의 주소 공간이 된다.
3. 디스크 스케줄링
I/O의 비용
이 크기 때문에 역사적으로 운영체제는 디스크에게 요청되는 I/O의 순서를 결정하는 데에 중요한 역할을 담당했다.
구체적으로 이야기하자면 I/O 요청이 주어졌을 때 디스크 스케줄러는 요청을 조사하여 다음에 어떤 I/O를 처리할지 결정하였다.
초기의 디스크 스케줄링 접근 방법은 최단 탐색 시간 우선(Shortest-seek-time-first, SSTF)
을 사용하였다.
SSTF는 트랙을 기준으로 I/O 요청 큐
를 정렬하여 가장 가까운 트랙
의 요청이 우선 처리되도록 한다.
하지만 이 방법은 드라이브의 구조
가 호스트 운영체제
에게 공개되어 있지 않으며 운영체제는 그저 블럭들의 배열로만 인식한다는 문제가 있다.
이 문제는 운영체제는 SSTF를 사용하는 대신 가장 가까운 블럭 우선(Nearest-block-first, NBF) 방식
을 사용하여 해결할 수 있다.
두 번째는 기아 현상
에 대한 문제이다.
안쪽 트랙에만 지속적으로 요청이 발생되는 상황이 발생할 수 있다.
트랙의 순서에 따라 디스크를 앞뒤
로 가로지르며 요청을 서비스한다.
디스크를 한 번 가로지르는 것을 스위프(sweep)
라고 부른다.
따라서 어떤 요청이 이번 스위프에 이미 지나간 트랙에 대해 들어온다면 바로 처리되지 않고 다음 번 스위프에 처리되도록 큐에서 대기한다.
문제에 대한 해법인 최단 위치 잡기 우선(shortest-positioning-time-first, SPTF)
이 있다.
이 방법은 탐색에 걸리는 시간과 회전에 걸리는 시간이 다르기 때문에 상황에 의존적
이다.
하지만 현대 드라이브들은 탐색과 회전이 거의 비슷해서 성능을 개선시킬 수 있다.