본문 바로가기

별걸다하는 IT/운영체제 OS

[운영체제]HDD 하드디스크 구조, magnetic disk 자기디스크 구조, 실린더

[운영체제 완전정복 목차]

Chapter 12 

Secondary-Storage Architecture

요새 하드디스크에서 SSD로 많이 바뀌어가지고 사용하는 추세지만 아직 가격적인 문제가 완전히 해결되지는 않았죠

그래서 아직은 보조기억장치 하면 하드디스크(HDD)를 생각합니다. 한 5년뒤면 SSD로 완전히 넘어가는 날이 오겠지만...ㅎㅎ 이번 포스팅에서는 HDD가 어떻게 생겼고 어떻게 동작하는지, 또 이로 인한 운영체제의 고려 사항이 뭔지를 얘기해볼 겁니다.


하드디스크는 뭔지 다 알죠? 데이터를 저장하는 저장장치입니다. 자기디스크의 한 종류예요. 컴퓨터 안에 들어있는 이렇게 생긴 아이가 하드디스크입니다.

우리가 컴퓨터 키면 항상 보였던 폴더  '로컬 디스크(C:)'  '새 볼륨(D:)' 등이 예전에는 하드디스크 폴더였죠! (지금은 SSD일수도 있고 HDD일 수도 있고)


하드디스크는 금속 재질인 플래터에 데이터를 기록하기 때문에 단단하다는 뜻으로 하드라는 이름이 붙었습니다.

자기 디스크(Magnetic disk)는 대용량 보조기억장치로 레코드판과 유사한 원판에 자성체를 입히고 원판의 정해진 궤도를 따라 자기헤드가 이동하면서 자료를 기록하거나 판독하는 컴퓨터 보조기억장치입니다. (자성을 이용한거라 자기 디스크!) 하드디스크는 자기 디스크의 일종이예요.



하드디스크의 구조

하드디스크는 실제 열어보면 내부는 이렇게 생겼습니다.

(Platter)Each disk platter has a flat circular shape, like a CD.

먼저 이 CD처럼 생긴 동그란 판을 플래터 Platter라고 부릅니다. 이 플래터는 앞면, 뒷면 두 개의 면으로 구성되어있어요. 

Common platter diameter range from 1.8 to 3.5 inches 

보통 플래터들 지름은 1.8인치에서 3.5인치정도 됩니다. 플래터는 금속재질이지만, 거울과 같이 반사가 잘 될 정도로 래핑상태가 부드러우며, 데이터를 기록하기 위해 산화철등의 자성체로 코팅되어 있습니다. (자기디스크의 특징)


(head 헤드 & arm 암)
A read-write head "flies" just above each surface of every platter. The heads are attached to a disk arm that moves all the heads as a unit. 

헤드가 플래터의 표면에 움직임으로써 거기다가 데이터를 쓰거나 읽어옵니다. 플래터의 표면은 참고로 한 면이 아니예요 그러니까 헤드는 플래터의 위에도 아래에도 존재합니다. 헤드는 arm(암)이라고 하는거에 붙어 있는데 암은 헤드와 하나의 유닛처럼 움직여요. 따라서 암 역시 플레터의 위 아래마다 하나씩 즉 각 플래터 당 두 개의 암이 달려있습니다.


(track & sector)

The surface of a platter is logically divided into circular tracks, which are subdivided into sectors.

이 플래터 표면 내에 동심원에 데이터를 저장하는 공간이 있는데 이것을 트랙(track)이라고 부르고 이 트랙의 일부를 피자조각처럼 작은 단위로 쪼갠 것을 섹터(sector)라고 합니다. 이 sector가 가장 작은 단위예요. sector는 보통 512byte입니다. 실제로 우리 운영체제가 지금 디스크에서 데이터를 읽고 쓰는 단위는 섹터 512가 아니고 4KB인 disk block이라고 하는 것으로 나누어 관리합니다.


(spindle motor 스핀들 모터)

When the disk is in use, a drive motor spins it at high speed. 

모터로 플래터들을 회전시켜요. 브러시리스 모터를 이용하여 구동하기 때문에 모터의 제어 회로가 따로 필요합니다. 이 모터덕분에 플래터는 빙글빙글 항상 돌고 있어요. 일 초에 몇 번 회전하냐를 단위기준으로 갖고 있는데 그게 여러분들이 종종 들어보았을 RPM(rotations per minute)입니다. 보통 드라이브는 5400, 7200, 10000, 15000RPM을 돕니다.


(SEEK, ROTATION, DATA TRANSFER)

내가 원하는 sector의 내용을 읽기 이해서는 arm assembly가 요 암 끝에 헤드가 달려 있는데 요 헤드가 읽고자하는 이 위치로 가야겠죠? 이 헤드가 움직여서 내가 원하는 track으로 갑니다. (겹겹히 쌓여있으므로 앞 뒤로 움직이면서 원하는 track을 찾아요)

이렇게 track으로 가는 작동 operation을 SEEK라고 합니다!

이렇게 맞는 track에 가면 이 플래터는 빙글빙글 항상 돌고 있으니까 언젠가는 헤드에 찾는 sector가 오겠죠. 이 rotation(회전)이 이루어지고 나서 이 sector에 있는 내용이 헤드로부터 데이터가 읽혀지는 겁니다. 읽는 게 DATA TRANSFER! 

즉 SEEK, ROTATION, DATA TRANSFER라는 세 가지 동작에 의해서 하드디스크 데이터가 읽혀지는데 이 중에서 가장 오래 걸리는 것이 SEEK입니다. SEEK는 기계적으로 움직어야 하니까 얘가 제일 느려요.


실린더란? 실린더가 중요한 이유?

(Cylinder 실린더)

실린더를 이해하는건 매우 중요해요!! 이제 실린더를 설명해볼게요.

자 여러분 아래한글이라는 실행파일이 있는데, 그 실행파일을 여러분이 실행시켰어요. 그럼 exe 파일은 일단 다 메모리에 올라갑니다. 실제로 exe파일에 있는 내용을 다 읽어야 해요. 아마 실행 파일이 몇 배 메가 바이트 일텐데 그걸 한 번에 쭉 읽어야 해!

아까 가장 작은 단위라고 했던 sector의 크기가 512바이트 = 0.5KB입니다. sector를 100개 하면? 50KB밖에 안되죠? 하튼 많이 읽어야 한다는 말이예요. ㅎㅎ 그러면 아래한글이라는 그 파일들을 어떻게 디스크에 배치하는 것이 효율적일까요? 


헤드가 여기가서 512크기를 읽고, 저~~~어기 가서 512 읽고 다시 일~~로 가서 512읽고 이러면 효율이 진짜 안좋겠죠? 한 번에 가서 순서대로 쫙! 읽어들여야 효율적일 테니까 연속된 파일을 배치하는 것이 좋습니다. 



그래서 일단 제일 위에 (1) 바깥 트랙에다가 아래 한글 파일을 연속적으로 배치를 했다고 가장해볼게요. 그래도 공간이 모잘라! 더 올려야해! 그러면 그 다음 파일은 어디에다가 배치하는 것이 좋을까요? 

그 다음은 바로 아래 track에다가 배치하는 것이 아닌, 뒷 면 즉 (2) 아랫면에다가 배치하는 것이 좋습니다. (헤드가 안움직여도 되니까요! seek 타임이 오래걸리잖아요!) 여기도 다 끝났어 그러면 어디로 가는게 좋아? 트랙의 바로 안쪽? (여기도 마찬가지로 arm assembly 가 움직여야 하니까 좋지 않습니다) 이번에도 마찬가지로 트랙의 안쪽보다는 그냥 (3) 밑 platter에다가 올리는 것이 좋다는거죠!! 그래서 이 platter들의 track 동심원 크기의 트랙들의 집합을 cylinder라고 이야기하고 연속된 파일은 가급적이면 같은 실린더에다가 배치를 하는 것이 움직임을 최소화 함으로 좋습니다.


디스크 조각 모음이란?

윈도우즈 시스템 도구에 가면 있는 디스크 조각모음은 하나의 파일인데 불연속적으로 배치된 것들을 연속적으로 배치해주는 작업이예요. 이렇게 하면 하드디스크 성능이 더 좋아지므로 이런 작업들을 종종 해주는 것이 좋아요. 이제 왜 성능이 좋아지는지 이해했을거라고 믿어요! 결국 하드디스크가 어떻게 하드웨어적으로 동작하는지를 이해하고 있어야 그 위에 파일을 저장하는 파일 시스템도 더 효율적으로 만들 수 있다는거죠. ㅎㅎ


오늘은 하드디스크가 어떻게 생겼고 어떻게 동작하는지 정도 소개했어요.