공부한거 정리하는 노트에요

[OS] 하드 디스크

by 구설구설

하드 디스크

하드 디스크는 용량이 크다. 따라서 데이터를 대량으로 저장하는 중요한 매체 중 하나이다.

컴퓨터의 전원이 꺼져도 하드 디스크의 데이터는 유지된다.

그러나 접근 속도가 느리며, 접근 시간은 수백 밀리세컨드 단위이다.

 

이러한 저장 장치들을 세컨더리 스토리지라고 한다.

프라이머리 스토리지는 주로 메모리를 의미한다.

CPU는 프라이머리 스토리지에서만 명령어나 데이터를 직접 접근할 수 있다.

세컨더리 스토리지는 CPU가 직접 접근할 수 없으며, 보통 섹터의 배열 형태로 추상화된다.

 

하드 디스크 구조와 작동 원리

구조

  • 하드 디스크는 섹터의 배열로 구성되어 있다.
    각 섹터의 크기는 512B 또는 4KB이다.
  • 하드 디스크 내부에는 여러 장의 플래터가 쌓여 있다.
    플래터가 회전하면서 데이터를 자기적으로 저장한다.
  • 플래터는 여러 개의 트랙으로 나뉘며, 같은 위치의 트랙을 실린더라고 한다.

 

작동 원리

  • 하드 디스크는 블록(섹터) 단위로 데이터를 읽고 쓴다.
  • 데이터를 읽고 쓰기 위해 암 어셈블리가 플래터 위를 움직이며 특정한 섹터를 찾는다.
  • 암이 데이터가 위치한 실린더로 이동하면 여러 플래터의 같은 트랙을 동시에 읽거나 쓸 수 있다.

 

하드 디스크에서 데이터 읽고 쓰기

CHS Scheme

트랙 위치를 <실린더 번호, 헤드 번호, 섹터 번호>의 세 가지 주소의 조합으로 표현하는 방법.

 

LBA(Logical Block Addressing)

디스크의 블록에 0부터 시작하는 주소값을 부여한다.

단순하게 주소로 데이터에 접근할 수 있게 해준다.

Ex) Write(1,3): 1번 블록에서 3개 읽어오기

디스크의 물리적인 데이터 배치는 OS에서 확인 할 수 없다.

연속적인 섹터에 연속적인 데이터를 배치한다.

 

하드 디스크 성능 요소

Seek Time: 암이 원하는 실린더로 이동하는 시간

Rotational Delay: 암이 이동한 후, 원하는 섹터가 헤드 포지션으로 올 때까지 기다리는 시간

Transfer Time: 원하는 섹터를 만나고 나서 데이터를 읽거나 쓰는데 걸리는 시간

 

세 가지 요소 중에서 성능에 가장 큰 영향을 미치는 것은 Seek Time이다.

하드 디스크의 평균 Seek Time은 Full Seek Time(암이 끝에서 끝까지 이동하는데 걸리는 시간)의 1/3이다.

 

하드 디스크 성능 비교 예시

Seek Time은 하드 디스크 성능에 가장 큰 영향을 미친다. 

= 가장 오래 걸린다.

Random Read 작업은 0.66MB/s의 성능밖에 나오지 않는다.

이는 시크 타임과 로테이셔널 딜레이로 인해 성능이 저하되기 때문이다.

반면에, 시퀀셜 리드 작업은 한 번의 시크 후에 연속적으로 데이터를 읽기 때문에 성능이 더 좋다.

시퀀셜 액세스의 성능은 트랜스퍼 성능과 거의 유사하다.

 

디스크 스케줄링 정책 

Seek Time 이 큰 오버헤드이므로, Seek Time을 줄이는 것이 가장 중요하다.

하드 디스크에 I/O 요청이 쌓였을 때 어느 순서로 처리해야 하는지 다양한 정책이 있다.

 

스케줄러 작동 여부에 따른 분류

Work conserving scheduler: 항상 스케줄링하여 쉬지 않고 Seek을 수행한다.

Non-work conserving scheduler: 추가적인 I/O 요청이 있을 것이라 기대할 때 잠시 대기하여 기다린다.

 

스케줄링 정책

FCFS(First Come First Served)

  • 요청이 온 순서대로 처리.
  • 암의 이동 거리가 길어질 수 있다.
  • 요청이 적을 때는 효과적이나 요청이 많으면 대기 시간이 많다.

SSTF(Shortest Seek Time First)

  • 현재 헤드 위치에서 가장 가까운 요청부터 처리.
  • 암의 이동을 최소화 한다.
  • 헤드 주소의 가운데에 있는 블록이 많이 스케줄링되어,
    양 끝에 있는 블록은 Staving 할 수 있다.

SCAN

  • 한쪽 방향으로 이동하면서 요청을 처리하고, 끝에 도달하면 반대 방향으로 이동하면서 요청을 처리하는 방식
  • 가운데에 있는 블록이 많이 스케줄링된다.

F-SCAN

  • SCAN하는 동안 큐에 새로운 요청이 들어오는 것을 막는 방식
  • 헤드로부터 멀리 떨어진 요청의 Starvation을 막는다.

C-SCAN

  • 한 방향으로만 SCAN 하면서 요청을 처리하는 방식
  • 끝까지 가면 반대쪽 끝에서 부터 시작

 

현대의 하드 디스크

  • 예전에는 OS 레벨에서 디스크 스케줄링을 열심히 했지만, 요즘에는 디스크 내부에서 스케줄링을 처리한다.
  • OS는 디스크 스케줄링보다는 사용자 간의 리소스 분배에 더 중점을 둔다.

 

  • 디스크는 여러 개의 리퀘스트를 받을 수 있다.
  • 디스크 컨트롤러는 디스크의 지오메트리를 알고 있어, 내부적으로 최적의 스케줄링을 수행한다.

'CS > OS' 카테고리의 다른 글

[OS] 듀얼 모드 (Dual Mode, 이중 모드)  (0) 2024.12.12
[OS] 프로세스  (0) 2024.12.11
[OS] 운영체제란?  (0) 2024.12.11
[OS] SSD  (0) 2024.05.24
[OS] I/O Device  (0) 2024.05.22

블로그의 정보

공부중임

구설구설

활동하기