본문 바로가기
공부/OS

[운영체제] 하드디스크 (Hard Disk)

by algosketch 2021. 6. 7.

platter : HDD 에는 여러 장(보통 4장)의 디스크가 있는데 한 장의 디스크를 platter 라고 부른다. 데이터를 저장한다.
head : platter 에 있는 데이터를 읽는다.
arm : head 를 연결하는 팔 역할이다. 마찬가지로 여러 개가 있다. platter 마다 두 개씩 있는데, 병렬로 읽고 쓸 수 있다.
surface : 하나의 platter 는 양면 다 활용이 가능하다. 한 면을 surface 라 부른다.
sector : HDD 의 기본 단위이다. 보통 페이지와 같은 크기인 4kb 를 많이 쓴다.
track : surface 내에서 반지름이 다른 동심원, 바깥에 있는 track 일수록 더 많은 데이터를 저장할 수 있다. 그리고 더 빠르게 읽고 쓸 수 있다.

 platter 가 도는 속도는 (보통 7000?)RPM 으로 나타내고 write 는 atomic 하게 동작한다. HDD 도 logical address 를 사용한다.

HDD 의 읽고 쓰는 속도를 결정하는 세 가지 요소가 있다.

1. rotation delay : 원하는 sector 가 head 의 위치까지 도달하는데 걸리는 시간
2. seek delay : head 가 다른 track 으로 옮기는 데 걸리는 시간
3. transfer time : 읽고 쓰는 시간

 1, 2 번은 물리적으로 동작하기 때문에 시간이 오래 걸리고 3번은 전기적(거의 빛의 속도)으로 동작하기 때문에 걸리는 시간이 짧다. 따라서 1, 2 번 시간에 영향을 많이 받는다.

caching

write back cache : 캐시에만 쓴다.
write through cache : 캐시랑 디스크 모두 쓴다.

 메모리는 write back 을 사용하지만 디스크는 write through 를 사용해야 한다. 중간에 전원이 꺼지는 경우 데이터가 날아갈 위험이 있기 때문이다.

disk scheduling

 디스크는 물리적으로 움직이는 부분이 많다. 이것을 최소화하도록 미리 계산하면 디스크의 속도를 높일 수 있다. disk sontroller 에 cpu 와 소프트웨어가 있고 여기서 스케줄링 한다. OS 에서 스케줄링을 구현할 수도 있지만 현재 헤드의 위치를 모른다.

FCFS 보다는 좋아야 한다.

SSTF Scheduling (Shortest Seektime First) : optimal 이지만 starvation 문제가 있다.
Scan : 한 방향으로 끝까지 갔다가 반대 방향으로 끝까지 간다. (엘리베이터 알고리즘) average access time 이 안 좋다.
c-scan : 한 뱡향으로만 이동한다. 끝을 만나면 반대쪽 끝에서부터 시작한다. 공평하지만 느리다.
c-look : c-scan 과 같지만 마지막 block 까지 가지 않고 읽어야하는 block 을 기준으로 마지막까지 이동한다.

NCQ (Native Command Queue, SATA 에서 채용된 기술) : track 과 rotation 을 모두 고려한 스케줄링 방법

'공부 > OS' 카테고리의 다른 글

[운영체제] SSD (Solid State Drive)  (0) 2021.06.07
[운영체제] RAID  (0) 2021.06.07
[운영체제] Free space  (0) 2021.06.07
[운영체제] 데드락 (Deadlock)  (0) 2021.06.02
[운영체제] 세마포어 (Semaphore)  (0) 2021.06.01