빙응의 공부 블로그

[OSTEP 영속성(persistence)]하드 디스크 드라이브(HDD) 본문

CS/운영체제

[OSTEP 영속성(persistence)]하드 디스크 드라이브(HDD)

빙응이 2025. 6. 2. 20:53

📝서론 

이전 장에서는 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의 기아 문제 해결: 엘리베이터 알고리즘

  1. SCAN (엘리베이터 알고리즘)
    • 디스크 헤드가 한 방향으로 이동하면서 요청 처리
    • 끝에 도달하면 반대 방향으로 이동
  2. C-SCAN (Circular SCAN)
    • 한 방향으로만 이동하고 끝에 도달하면 처음으로 점프
    • SCAN보다 고른 응답 시간 제공
  3. F-SCAN
    • 요청을 두 개의 큐로 분리.
    • 현재 큐를 처리 중일 때 도착한 요청은 다음 큐로 분리 → 공정성 확보

 

📌 회전 지연까지 고려한 최적 알고리즘: SPTF

✅ SPTF (Shortest Positioning Time First)

  • 탐색 시간 + 회전 지연을 모두 고려한 스케줄링
  • 디스크의 실제 동작 시간 예측 → 이론적으로 가장 효율적

하지만 현실적인 한계가 존재함

운영체제는 디스크의 정확한 회전 상태(헤드 위치, 디스크 각도 등)를 정확히 알 수 없음
→ 그래서 운영체제 수준에서 구현하기 어려움

👉 실제로는 SPTF 알고리즘이 디스크 드라이브(컨트롤러) 내부에서 수행됨