Notice
Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

topcue

[OS] Hard Disk Drives 본문

Operating System

[OS] Hard Disk Drives

topcue 2021. 9. 3. 23:43

The Interface

  • Sector

HDD를 이루는 512B 단위이며 atomic하게 읽거나 쓸 수 있다.

디스크 판은 자화(N/S) 되어있다. head는 arm을 통해 전해지는 전기 신호를 자기 신호로 바꾸어 자화 시키거나, 반대로 디스크에서 읽은 자기 신호를 전기신호로 바꿔 arm으로 전달하는 역할을 한다.

판이 여러 개 있는 것을 cylinder라고 한다.

Basic Geometry

  • platter

자기 변화를 유도해 데이터가 저장되는 원형의 표면이다. 플래터는 두 개 이상 있을 수 있고, 플래터의 각 면을 surface라고 한다. 플래터는 전기를 끊어도 자성으로 비트를 유지한다.

플래터는 spindle 주위에 함께 묶여 있다. 회전 속도는 RPM(rotations per minute)로 측정된다.

동심원 하나가 track이고 이 track에 sector들이 있다.

surface에서 읽기와 쓰기는 disk head가 수행한다.

A Simple Disk Drive

12개의 섹터가 있는 판이 있고 head가 6을 가리키고 있다고 하자.

Single-track Latency: The Rotational Delay

  • rotational delay

특정 sector가 head로 오기까지의 지연시간. 한 바퀴의 딜레이를 R이라고 한다.

delay는 head와 sector의 각도에 달려있다.

Multiple Tracks: Seek Time

아래 그림처럼 트랙이 여러 개 있을 수 있다.

  • seek

head가 다른 track을 읽기 위해 움직이는 것(arm에 있는 모터가 head를 이동시킨다.)

sector의 phase는 다음과 같이 변한다: Acceleration → Coasting → Deceleration → Settling

settling time은 보통 0.5~2 ms다.

Some Other Details

  • track skew

head가 sector를 효율적으로 읽을 수 있도록 하는 방법 중 하나다.

보통은 연속해서 섹터를 읽는데 11을 읽고 다음 섹터인 12를 읽는 상황을 가정하자. 이때 head만 안쪽 트랙으로 이동하는 것이 아니라 트랙도 동시에 rotation 해야 한다. 따라서 다음으로 읽을 12를 head의 직선상에 놓는 것이 아니라 살짝 뒤에 놓으면 딜레이가 적다.

  • multi-zoned

바깥 track에 더 많은 sector를 배치하는 방법

  • cache(track buffer)

cache를 이용해 한 track을 한 번에 읽어서 메모리에 저장한다. 이때 I/O Bus를 이용해 DRAM까지 전달한다.

read는 간단하지만 wrtie는 간단하지 않다.

  • Cache wrtie

메모리에 값이 바뀌면 바로 쓰는 write-through(성능 x, 안전 O)와 모아서 한 번에 하는 write-back(성능 O, 안전 X)이 있다.

I/O Time: Doing The Math

  • I/O Time

읽는데 걸리는 delay.

TI/O=Tseek+Trotation+TtransferT_{I/O} = T_{seek} + T_{rotation} + T_{transfer}

TseekT_{seek}: head가 track을 이동하는데 걸리는 시간.

TrotattionT_{rotattion}: track이 도는데 걸리는 시간.

TtransferT_{transfer}: 자기장 정보를 전기적 정보로 바꾸는데 걸리는 시간. (sector가 head를 지나칠 때 데이터의 전송 속도)

  • I/O Rate

단위 시간당 읽고 쓸 수 있는 양(bandwidth)

RI/O=SizetransferTI/OR_{I/O} = \frac{\text{Size}_\text{transfer}}{T_{I/O}}
  • Disk Drive Specs: SCSI Versus SATA

    RPM: 분당 회전 속도

  • 결론

    Performance는 SCSI, Capacity는 SATA가 좋다.

    Random은 느리고 Sequential Write는 빠르다.


Disk Scheduling

HDD에서의 기계적인 연산은 DRAM의 연산에 비해 매우 느리기 때문에 DRAM에서 순서를 바꾸고(scheduling) HDD에서 처리하는 게 효율적이다.

disk scheudler는 가능한 가장 짧은 job부터 끝내고 싶어 한다.(principle of SJF)

40개의 cylinder 중 11에서 시작하고 [1, 36, 16, 34, 9, 12] 순서로 진행한다고 가정하자.

FIFO

순서대로 처리한다. ((11 → 1 (10), 1 → 36(35), ....))

  • 10 + 35 + 20 + 18 + 25 + 3 = 111 arm motions

FIFO는 비효율적이다.

SSTF: Shortest Seek Time First

seek time이 짧은(가장 가까운) 곳부터 간다. (11 → 12(1), 12 → 9(3), ...)

  • 1 + 3 + 7 + 15 + 33 + 2 = 61 arm motions

속도는 빠르다.

대신 head 근처로 요청이 계속 들어오면 head에서 먼 곳에서 starvation 현상이 발생한다.

  • SSTF: Scheduling Requests 21 And 2

    Rotation delay를 무시하고 seek 타임만 고려했을 때 [2, 21]가 request로 들어오면 가장 바깥 트랙(0)에 갔다가 가운데(1)로 와야해서 비효율적이다. 따라서 [21, 2] 순서로 처리한다.

Elevator (a.k.a. SCAN or C-SCAN)

엘리베이터처럼 한 방향으로 이동하기 시작하면 끝까지 scan하고 돌아온다.(양방향 sweep)

  • 1 + 4 + 18 + 2 + 27 + 8 = 60
  • Scan 과정
  • Scan 과정 2

    [10(0) → 23(1) → 11(0) → 25(2)]에서 23에서 올라가는 중이므로 11(0)을 무시하고 25(2)부터 처리한다.

SSTF보다 fair하지만 가운데는 여전히 덜 fair하다.

  • C-SCAN(Circular SCAN)

C-SCAN은 한 방향으로 끝까지 가면 reset한다. (한 방향 sweep)

  • 1 + 4 +8 +16 + 2 + 1 + 8 = 34

sweep하고 돌아오는 시간은 0으로 가정

  • C-SCAN 과정
  • F-SCAN

Sweep하는 중에 들어오는 request는 따로 모아 Queue로 만든다. 진행 중인 sweep이 끝나면 queue에 있는 request를 SCAN 방식으로 처리한다.

  • F-SCAN 과정

    나중에 들어온 [23, 11, 35]를 sweep할 때 [11, 23, 35] 순서로 처리한다.

SPTF: Shortest Positioning Time First

positioning time(Seek time과 Rotation delay)을 고려한 scheduling 방식이다.

Seek time과 Rotation time의 상대적인 속도를 이용해 결정한다.

  • SPTF 과정

Other Scheduling Issues

Disk scheduler의 또 다른 역할은 I/O merging이다.

I/O 요청이 Random하게 왔을 때 바로 처리하는 것이 아니라 Sequential하게 최적화하는 게 더 빠르다.

  • I/O merging 예시

    33과 34 사이의 seek time을 없앨 수 있다.


'Operating System' 카테고리의 다른 글

[OS] File System Implementation  (0) 2021.09.03
[OS] Files and Directories  (0) 2021.09.03
[OS] I/O Devices  (1) 2021.09.03
[OS] DeadLock  (0) 2021.09.03
[OS] Semaphores  (0) 2021.09.03
Comments