빙응의 공부 블로그
[OSTEP 영속성(persistence)]하드 디스크 드라이브(HDD) 본문
📝서론
이전 장에서는 I/O 장치 전반에 대한 개념과, 운영체제가 이러한 장치들과 어떻게 상호작용하는지 살펴보았다.
이번 장에서는 특정 I/O 장치인 하드 디스크 드라이브(HDD)에 대해 좀 더 구체적으로 알아본다.
핵심 질문
- 디스크에 있는 데이터를 어떻게 저장하고 접근하는가?
- 현대 디스크는 데이터를 어떻게 저장하는가?
- 디스크 인터페이스는 어떤 방식으로 작동하는가?
- 실제로 데이터는 어떻게 배치되고 접근되는가?
📝인터페이스
현대 디스크 드라이브의 인터페이스를 이해해보자.
모든 현대 디스크 드라이브의 기본적인 인터페이스는 단순하며 규칙들이 존재한다.
- 드라이브는 읽고 쓸 수 있는 매우 많은 수의 블럭들로 이루어져 있다.
- 디스크의 블럭들은 배열로 0부터 N-1까지의 주소 공간을 가진다.
- 드라이브는 원자적으로 온전히 모두 완료되거나 온전히 모두 실패한다.(DB의 Atomicity 특성과 비슷)
📝기본 구조
1. 플래터(Platter)
- 자성 물질이 입혀진 원형의 표면으로 데이터를 저장.
- 보통 알루미늄이나 유리 재질이며, 전원이 꺼져도 데이터 유지.
- 각 플래터는 양면(surface) 사용 가능.
2. 회전축(Spindle)과 회전 속도
- 플래터는 모터와 연결된 축에 의해 회전함.
- RPM(Rotations Per Minute) : 분당 회전수 (예: 7,200 ~ 15,000RPM)
- 한 바퀴 회전 시간 = 60,000ms / RPM (예: 10,000RPM → 6ms)
3. 트랙과 섹터
- 트랙(Track) : 플래터 표면에 동심원 형태로 존재.
- 섹터(Sector) : 트랙을 나눈 조각, 보통 512Byte 단위.
- 하나의 플래터에는 수천 개의 트랙, 각 트랙에는 수십~수백 개의 섹터가 있음.
4. 디스크 헤드(Disk Head)
- 읽기/쓰기 장치로 디스크 암에 붙어 있음.
- 각 표면에 하나씩 존재하며, 원하는 트랙으로 이동 가능.
📝간단한 디스크 드라이브 작동 원리
- 예시: 트랙 1개, 섹터 12개(0~11번), 각 512byte.
- 읽기 요청 시, 헤드는 섹터가 지나가기를 기다린다 → 이를 회전 지연(Rotational Delay) 이라고 한다.
- 평균 회전 지연 : 한 바퀴 시간의 절반이다.
📝멀티 트랙 : 탐색 시간
현대의 디스크들은 당연하겠지만 수백만 개의 트랙을 갖는다.
그렇기에 디스크가 읽기 요청을 처리하기 위해 드라이브는 디스크 암이 움직여 다른 트랙의 섹터로 이동한다. → 이를 탐색(Seek) 이라고 한다. 이 작업은 회전과 더불어서 가장 비싼 디스크 동작 중 하나이다.
현대의 디스크 드라이브는 바깥 측의 공간이 안쪽 공간보다 많은 멀티 구현 디스크 드라이브를 사용한다
또한 현대 디스크 드라이브에서 가장 중요한 부분은 캐시로서, 트잭 버퍼 라고도 부른다.
- 캐시는 8 또는 16MB 정도의 작은 크기의 메모리로 드라이브가 디스크에서 읽거나 쓴 데이터를 보관한다.
- 디스크에서 읽은 데이터를 캐시에 저장해 재요청 시 빠르게 응답한다.
📌 쓰기 드라이브의 전략
✅ Write-back (쓰기 지연)
- 캐시에 먼저 쓰고, 나중에 디스크에 기록.
- 장점: 빠른 응답, 쓰기 병합 가능 → 디스크 접근 횟수 감소
- 단점: 전원 장애 시 데이터 손실 가능
→ 배터리 백업 or UPS와 함께 사용
✅ Write-through (즉시 쓰기)
- 캐시와 디스크에 동시에 기록.
- 장점: 데이터 무결성과 안정성 보장
- 단점: 성능 저하, I/O 오버헤드
📝디스크 스케줄링
운영체제는 디스크 I/O 요청의 순서를 결정하여 성능을 개선한다.
📌 CPU 스케줄링과의 차이
디스크 I/O는 실행 시간 예측이 비교적 쉬움 (탐색 시간 + 회전 지연).
✅ SSTF (Shortest Seek Time First, 최단 탐색 시간 우선)
- 가장 가까운 트랙의 요청을 우선 처리.
- 장점: 평균 탐색 시간이 줄어듦.
- 단점: 기아(starvation) 문제 — 먼 위치 요청은 무한히 대기할 수 있음.
✅ NBF (Nearest Block First)
- SSTF에서 디스크 구조를 모를 때 대안.
- 가장 블록 번호가 가까운 요청을 우선 처리.
📌 SSTF의 기아 문제 해결: 엘리베이터 알고리즘
- SCAN (엘리베이터 알고리즘)
- 디스크 헤드가 한 방향으로 이동하면서 요청 처리
- 끝에 도달하면 반대 방향으로 이동
- C-SCAN (Circular SCAN)
- 한 방향으로만 이동하고 끝에 도달하면 처음으로 점프
- SCAN보다 고른 응답 시간 제공
- F-SCAN
- 요청을 두 개의 큐로 분리.
- 현재 큐를 처리 중일 때 도착한 요청은 다음 큐로 분리 → 공정성 확보
📌 회전 지연까지 고려한 최적 알고리즘: SPTF
✅ SPTF (Shortest Positioning Time First)
- 탐색 시간 + 회전 지연을 모두 고려한 스케줄링
- 디스크의 실제 동작 시간 예측 → 이론적으로 가장 효율적
❗ 하지만 현실적인 한계가 존재함
운영체제는 디스크의 정확한 회전 상태(헤드 위치, 디스크 각도 등)를 정확히 알 수 없음
→ 그래서 운영체제 수준에서 구현하기 어려움
👉 실제로는 SPTF 알고리즘이 디스크 드라이브(컨트롤러) 내부에서 수행됨
'CS > 운영체제' 카테고리의 다른 글
[OSTEP 영속성(persistence)]파일과 디렉터리 (0) | 2025.06.04 |
---|---|
[OSTEP 영속성(persistence)]I/O 장치 (1) | 2025.05.27 |
[OSTEP 병행성(concurrency)]이벤트 기반의 병행성(고급) (0) | 2025.05.06 |
[OSTEP 병행성(concurrency)]병행성 관련 오류 (0) | 2025.05.06 |
[OSTEP 병행성(concurrency)]세마포어(semaphore) (0) | 2025.05.04 |