2026. 4. 7. 12:41ㆍ운영체제(OS)
하드디스크 구조와 디스크 스케줄링 알고리즘
하드디스크의 구조와 처리 시간 구성을 살펴보고, HDD와 SSD의 본질적인 차이를 이해한 뒤 디스크 스케줄링 알고리즘들을 정리한다.
1. 하드디스크 구조
CPU가 처리하는 데이터는 주기억장치에 있어야 하지만, RAM은 용량 한계가 있고 전원이 꺼지면 사라진다. 그래서 영구 보관이 필요한 데이터는 보조기억장치에 저장한다. 보조기억장치의 대표는 오랫동안 하드디스크(HDD)였다.
HDD 저장 공간은 섹터 → 트랙 → 실린더1 계층으로 구성된다. 논리적으로 두 섹터를 묶은 클러스터2가 I/O의 기본 단위다. 일반적인 회전속도는 7,200 RPM이며, 플래터3가 돌고 헤드가 물리적으로 이동해야 데이터에 접근할 수 있다.
디스크에서 데이터를 읽을 때 걸리는 총 시간은 세 요소의 합이다.
(Seek Time)
(Rotational Latency)
(Transmission Time)
이 중 탐색시간이 가장 크고 스케줄링으로 줄일 수 있는 유일한 요소다. 헤드가 트랙까지 물리적으로 이동해야 하는 구조적 한계다. 이 한계가 결국 SSD로 넘어가게 된 핵심 이유다.
2. HDD vs SSD — 왜 SSD로 넘어갔나
HDD는 수십 년간 보조기억장치의 표준이었다. 그런데 왜 SSD가 빠르게 자리를 대체하고 있을까. 단순히 "SSD가 빠르다"를 넘어, 구조가 근본적으로 다르기 때문에 속도 자체의 차원이 달라진다.
// 데이터 하나 읽는 과정 (HDD)
헤드 이동 (Seek Time) → 수~수십 ms
원판 회전 대기 (Rotational) → 평균 4ms (7,200 RPM 기준)
데이터 전송 (Transfer) → 100~200 MB/s
// 물리 동작이 필연적으로 발생 → 속도는 물리 법칙에 묶임
// 데이터 하나 읽는 과정 (NVMe SSD)
탐색시간 (Seek) → 사실상 0 (물리 이동 없음)
회전지연 → 없음
데이터 전송 → 최대 7~8 GB/s (PCIe Gen4 기준)
// 물리 동작 자체가 사라짐 → 속도 차원이 달라짐
SSD 내부 구조 — 병렬 처리의 비밀
SSD 내부는 NAND 플래시 셀을 Page → Block → Plane → Die → Channel 계층으로 쌓아 구성한다. HDD가 헤드 하나로 순서대로 읽는 것과 달리, SSD는 여러 Channel과 Die가 동시에 독립적으로 동작해 병렬로 데이터를 읽고 쓸 수 있다.
각 Channel · Die가 독립적으로 동작 → 동시에 여러 곳에서 읽기 / 쓰기 가능
이 병렬 구조를 관리하는 것이 SSD 내부의 FTL5이다. FTL은 OS가 보내는 논리 주소(LBA)를 실제 NAND 물리 주소로 변환하고, Wear Leveling6·가비지 컬렉션7 등 NAND 특유의 특성을 내부에서 처리한다. OS 입장에서는 그냥 빠른 블록 장치처럼 사용하면 된다.
HDD vs SSD 한눈에 비교
SSD의 단점도 있다. NAND 셀은 전자를 주입해 데이터를 기록하는 방식이라 쓰기 횟수에 한계가 있고, GB당 단가도 HDD보다 높다. 그래도 속도·소비 전력·내구성 면에서 압도적이라 현재 PC와 서버 시장의 주류가 됐다. HDD는 가격 대비 대용량이 필요한 아카이브용으로 여전히 쓰인다.
3. 디스크 스케줄링
디스크 스케줄링은 HDD 환경에서 헤드를 어떤 순서로 이동할지 결정하는 정책이다. 목표는 탐색시간 최소화다.
아래 예시의 공통 조건: 초기 헤드 위치 45, 대기 큐: 90, 175, 35, 115, 5, 120, 50, 60
3-1. FCFS9 스케줄링
들어온 순서 그대로 처리한다. 구현이 쉽고 공평하지만 헤드가 디스크를 왔다 갔다 하는 비효율이 크다. 요청이 적을 때는 괜찮지만 큐가 쌓이면 응답 시간이 급격히 늘어난다.
3-2. SSTF10 스케줄링
현재 헤드에서 가장 가까운 트랙부터 처리한다. 평균 탐색 시간이 짧아 처리량이 높다. 그러나 실린더 양 끝 요청은 중간 요청에 계속 밀려 기아현상11에 빠지기 쉽다.
3-3. SCAN12 스케줄링
한 방향으로 끝까지 이동하면서 요청을 처리하고, 끝에서 방향을 바꾼다. 엘리베이터 알고리즘이라고도 부른다. SSTF보다 기아현상이 적고, 실제 HDD 스케줄링의 기본 전략이다.
3-4. C-SCAN13 스케줄링
항상 바깥쪽 → 안쪽 한 방향으로만 이동한다. 안쪽 끝에 도달하면 반대쪽 끝으로 점프해 동일 방향으로 서비스를 재개한다. 트랙 안쪽·바깥쪽의 대기 시간 편차를 줄이는 것이 목적이다.
3-5. N-step SCAN14 스케줄링
SCAN의 변형으로, 방향 결정 시점의 요청만 묶어 처리한다. 처리 중 새로 들어온 요청은 반대 방향 전환 시까지 별도 큐에 대기한다. 특정 위치에 요청이 몰려도 기아현상이 발생하지 않는다.
3-6. 기타 알고리즘
| 알고리즘 | 특징 | 적합한 환경 |
|---|---|---|
| LOOK | SCAN에서 실제 요청이 있는 끝까지만 이동, 불필요한 이동 제거 | 일반 HDD — SCAN보다 평균 탐색 거리 짧음 |
| C-LOOK | C-SCAN + LOOK 결합, 한 방향 + 요청 있는 끝까지만 | 일반 HDD — C-SCAN 개선판 |
| 에센바호15 | C-SCAN 방식 + 실린더 한 바퀴 회전 동안 해당 실린더 요청 전부 처리. 탐색·회전 지연 동시 최적화 | 부하 매우 큰 시스템 (항공 예약 등) |
| SLTF16 (섹터 큐잉) | 탐색 없이 회전 지연만 존재하는 환경에서 가장 가까운 섹터부터 처리 | 고정 헤드 장치 (드럼 등) |
📎 용어 설명
- 실린더 (Cylinder) — 여러 플래터에서 같은 반지름 위치에 있는 트랙들의 집합. 헤드가 이동하지 않고 접근할 수 있는 데이터 단위다.
- 클러스터 (Cluster / Block) — 논리적으로 두 개 이상의 섹터를 묶은 단위. 파일 시스템이 데이터를 읽고 쓰는 기본 단위.
- 플래터 (Platter) — 자성 물질로 코팅된 원형 디스크. 하드디스크는 여러 장의 플래터가 겹쳐 회전한다.
- NAND 플래시 메모리 (NAND Flash Memory) — 전원이 꺼져도 데이터가 유지되는 비휘발성 반도체 메모리. 셀에 전자를 주입하거나 제거해 데이터를 기록한다. SSD의 핵심 저장 매체다.
- FTL (Flash Translation Layer) — SSD 내부에서 호스트의 논리 주소(LBA)를 실제 NAND 물리 주소로 변환하고, 가비지 컬렉션·Wear Leveling 등을 담당하는 펌웨어 계층.
- Wear Leveling (웨어 레벨링) — NAND 셀의 쓰기 횟수 한계를 극복하기 위해 특정 셀에 쓰기가 집중되지 않도록 고르게 분산하는 기법. FTL이 내부적으로 처리한다.
- 가비지 컬렉션 (Garbage Collection) — NAND는 덮어쓰기가 불가능하고 블록 단위로만 지울 수 있어, 사용하지 않는 데이터가 남은 블록을 주기적으로 정리하는 작업.
- NVMe (Non-Volatile Memory Express) — PCIe 인터페이스를 통해 SSD에 직접 연결되는 고속 스토리지 프로토콜. CPU 코어마다 전용 큐를 할당해 진정한 병렬 처리를 지원한다. SATA 대비 수십 배 빠른 속도를 낸다.
- FCFS (First Come First Served) — 먼저 들어온 요청을 먼저 처리하는 방식. FIFO 알고리즘과 동일하다.
- SSTF (Shortest Seek Time First) — 현재 헤드에서 탐색 거리가 가장 짧은 요청을 우선 처리하는 방식.
- 기아현상 (Starvation) — 특정 요청이 계속 우선순위에서 밀려 무한히 대기하게 되는 현상.
- SCAN — 헤드가 한 방향으로 끝까지 이동하며 요청을 처리하고, 끝에서 방향을 바꾸는 알고리즘. 엘리베이터 알고리즘이라고도 한다.
- C-SCAN (Circular SCAN) — SCAN의 변형. 항상 한 방향으로만 이동하고, 끝에 도달하면 반대쪽 끝으로 점프해 동일 방향으로 서비스를 재개한다.
- N-step SCAN — SCAN의 변형. 방향 결정 시점의 요청만 묶어 처리하고, 이후 도착 요청은 다음 방향 전환 시 처리해 기아현상을 방지한다.
- 에센바호 (Eschenbach) — 탐색 시간과 회전 지연 시간을 동시에 최적화하는 알고리즘. 한 방향으로 이동하면서 각 실린더를 한 바퀴 회전하는 동안 해당 실린더의 모든 요청을 처리한다.
- SLTF (Shortest Latency Time First) — 섹터 큐잉이라고도 함. 탐색 시간이 없는 고정 헤드 장치에서 회전 지연이 가장 짧은 섹터부터 처리한다.
'운영체제(OS)' 카테고리의 다른 글
| [OS] 디스크 사용 가능한 공간 관리와 디스크 공간 할당 방법 - 17 (0) | 2026.04.11 |
|---|---|
| [OS] 파일 시스템(File System) - 16 (0) | 2026.04.10 |
| [OS] 페이지 교체 알고리즘, 워킹셋, 스래싱 - 14 (0) | 2026.04.06 |
| [OS] 가상기억장치와 주소 변환 기법 - 13 (0) | 2026.04.06 |
| [OS] 메모리 단편화(Fragmentation)와 배치 전략 - 12 (0) | 2026.04.03 |