본문 바로가기

Operating System [OS]

[OS] 11.Mass-Storage Systems

Mass Storage Structure

Magnetic Disk : 현대 컴퓨터의 보조 저장장치를 제공 (HDD) - 드라이브는 초당 60에서 250회 회전

  • Transfer rate : 드라이브와 컴퓨터 사이에 데이터가 흐르는 속도
  • Positioning time (Random-access time) : Seek time + Rotation Latency
  • Seek time : 원하는 실린더로 디스크 암을 이동시키는 시간
  • Rotation time : 디스크 헤더 아래로 원하는 섹터가 위치하는데 걸리는 시간

드라이브는 I/O 버스를 통해 컴퓨터와 연결
컴퓨터의 Host Controller는 드라이브나 저장장치에 내장된 Disk Controller와 통신하기 위해 버스를 사용

 

Hard Disk 성능

  • Access Latency = Average Access time = Average Seek Time + Average Latency (1/2 * latency(60/RPM))
  • 가장 빠른 디스크 => 3ms + 2ms = 5ms
  • 가장 느린 디스크 => 9ms + 5.56ms = 14.56ms
  • Average I/O time = Average Access time + (amount to transfer / transfer rate) + controller overhead
  • 7200 RPM 디스크 / Average Seek time : 5ms / 1Gb/s의 전송 속도 / 0.1ms의 컨트롤러 오버헤드
  • 4KB 블록을 전송하는 경우의 Average I/O time 

=> 5ms + 4.17ms + 0.1ms + Transfer time (Transfer time = 4KB / 1Gb/s = 32 / (1024²) = 0.031ms) 

=> Average I/O time = 9.27ms + 0.031ms = 9.301ms

 

디스크 구조

  • 디스크 드라이브는 Logical Block의 큰 1차원 배열로 저장됨 / Logical Block = 전송의 최소 단위
  • Low-Level 포맷팅은 물리적 미디어에 Logical Block을 생성
  • 논리적 블록의 1차원 배열은 디스크의 섹터에 순차적으로 매핑됨
  • 섹터 0 : 가장 바깥 실린더의 첫 번째 트랙의 첫 번째 섹터
  • 트랙을 따라서 매핑이 진행되고 다음으로 해당 실린더의 나머지 트랙, 그리고 안쪽의 실린더 순으로 매핑
  • 논리 주소에서 물리 주소로의 변환은 간단
     - Bad Sector의 경우는 어려움 / 일정 각속도는 각 트랙당 섹터 수가 고정이 아님
     - 요즘은 일정 각속도 대신 Zone Bit Recording(ZBR)을 사용

Disk Attachment

  • I/O 버스를 통한 I/O 포트를 통해 Host-attached 저장장치에 접근
  • ATA(advanced technology attachment), SATA(serial ATA), eSATA, USB(Universal Serial Bus), FC(Fiber Channel) 등 여러 종류 버스 이용 가능
  • NVM은 HDD보다 빠르므로 PCI 버스에 직접 연결된 NVM express (NVMe) 인터페이스 사용

Disk Scheduling

OS는 하드웨어를 효율적으로 사용하는 것에 대한 책임이 있음
디스크 드라이브에 대하여, 이것은 빠른 접근 시간과 디스크 대역폭을 갖추는 것을 의미함
Seek time을 최소화


디스크 대역폭(bandwidth)

  • 전송에 사용된 총 바이트 수를 서비스의 첫 요청과 마지막 전송이 완료될 때까지의 총 시간으로 나눔

디스크 I/O 요청은 입력 혹은 출력 모드, 디스크 주소, 메모리 주소, 전송할 섹터의 수를 포함

OS는 장치마다 요청 큐를 유지함

유휴 디스크는 I/O 요청을 즉시 처리할 수 있지만, 바쁜 디스크는 Waiting Queue를 요구함

최적화 알고리즘은 큐가 존재할 때만 의미가 있음

디스크 I/O 요청을 스케줄하기 위한 몇몇 알고리즘이 존재

 

FCFS Scheduling

총 640번의 헤드 이동

 

SSTF Scheduling

현재 헤드 위치에서 최소 Seek time을 갖는 요청을 선택하는 디스크 스케줄링 알고리즘

Shortest Job First(SJF)의 한 형태이며 몇몇 요청에 대해 Starvation이 발생할 수 있음

총 236번의 헤드 이동

 

SCAN Scheduling

디스크 암은 디스크의 한쪽 끝에서 시작하여 다른 쪽 끝으로 이동하며 요청을 처리

그 후 다시 반대 방향으로 헤드가 이동하면서 서비스를 계속 함

총 236번의 헤드 이동

SCAN Algorithm = Elevator Algorithm

요청이 균일하게 분포되어 있는 경우, 다른 쪽 디스크에 밀집도가 가장 높다면 해당 부분의 대기하는 요청들이 오랜 시간을 기다릴 수 있음
 => 해결 방법 : Look 방식 (SCAN과 비슷하지만 끝까지 가지 않고 14와 183에서 각각 턴을 함)

 

C-SCAN (Circular SCAN) Scheduling

SCAN보다 더 균일한 대기 시간을 제공

헤드는 디스크 한쪽 끝에서 다른 쪽 끝까지 이동하면서 요청을 처리하고 끝에 도달하면 즉시 돌아감

실린더를 원형 리스트로 취급하며 마지막 실린더에서 첫 번째 실린더로 감싸지는 방식

총 382번의 헤드 이
 => C-Look 방식도 존재

 

디스크 스케줄링 알고리즘 선택

  • SSTF가 흔하고 자연스러움
  • SCAN과 C-SCAN은 디스크에 부하를 주는 시스템에서 더 나은 성능을 보임 (Starvation이 적음)
  • 성능은 요청의 수와 타입에 따라 달라짐
  • 디스크 서비스를 위한 요청은 파일 할당 방법에 영향을 받을 수 있음
  • 디스크 스케줄링 알고리즘은 OS의 별도 모듈에 작성되어 필요한 경우 다른 알고리즘으로 교체 가능해야 함
  • Disk Rotation Latency는 OS가 계산하기 어려움

Nonvolatile Memory Device (NVM)

비휘발성 메모리인 SSD(Solid State Disk)와 USB 드라이브
HDD보다 신뢰성이 높으며 탐색이나 지연시간이 없기 때문에 속도가 빠름
MB당 가격이 높고, 용량은 작으며, 수명이 짧아 용도가 제한적임
장점 : 더 작고, 빠름 / 에너지 효율적
표준 버스 인터페이스가 성능에 제한을 주므로 PCI와 같은 시스템 버스에 직접 연결할 수 있도록 설계함

 

NAND 반도체는 일부 특성 때문에 자체적인 저장 및 신뢰성 문제가 있음

  • 페이지 단위로 읽고 쓰기는 가능하지만 데이터를 덮어 쓸 수 없음
  • 삭제는 여러 페이지로 구성된 블록 단위로 이루어짐
  • NAND 반도체는 삭제할 때마다 기능이 열화되므로 약 100000 프로그램 삭제 주기 후에 셀은 더 이상 데이터를 유지하지 않음
  • 수명이 DWPD(Drive writes per day)로 정의됨

NAND 플래시 제어기 알고리즘

  • 덮어쓸 수 없기 때문에 유효한 데이터와 유효하지 않은 데이터가 포함된 페이지가 존재
  • 유효한 데이터를 포함하는 논리 블록을 추적하기 위해 컨트롤러는  플래시 변환 계층(Flash Translation Layer, FTL)을 유지함
  • 유효하지 않는 가용 공간을 가비지 수집으로 처리함
  • 쓰기 성능 향상을 위해 과잉 공급(over-provisioning) 기법을 사용함
  • 과잉 공급 공간은 마모 평준화(wear leveling)에 도움이 됨
  • 마모 평준화 : SSD 저장 장치의 수명을 늘리기 위한 기법

NVM 스케줄링

  • NVM 장치는 간단한 FCFS 정책을 사용함
  • Linux의 NOOP 스케줄러는 FCFS 정책을 사용하지만 인접한 요청을 병합하도록 수정함
  • IOPS(Input/output Operations per Second) 측면에서 HDD보다 NVM이 훨씬 빠름
  • NVM의 쓰기 성능은 장치가 얼마나 찼는지 얼마나 마모되었는지 따라 달라짐
  • 응용 프로그램이 아니라 가비지 수집 및 공간 관리를 수행하는 NVM 장치에 의한 I/O 요청 생성을 쓰기 증폭(write amplication)이라고 하며 장치의 쓰기 성능에 영향을 줌

Swap-Space Management

Swap-Space : 가상 메모리는 메인 메모리의 확장으로 디스크 공간을 사용 (메모리의 연장 느낌)

최근에는 메모리 용량의 증가로 흔하지는 않음

Swap-Space는 일반 파일 시스템 또는 더 흔히는 분리된 디스크 파티션에 있을 수 있음

 

Swap-Space 관리

  • 커널은 Swap-space의 상태를 추적하기 위해 Swap Maps를 사용
  • 몇몇 시스템은 여러 개의 Swap-space를 허용

 

 


RAID

RAID : Redundant Array of Inexpensive (independent) Disks (비싸지 않은 디스크의 다중 배열)

여러 디스크 드라이브가 중복성을 통해 신뢰성을 제공

  • Mean time to failure 증가
  • Mean time to repair : 다른 고장으로 인하여 데이터 손실이 발생할 수 있는 노출 시간
  • Mean time to data loss는 위의 두 요소의 영향을 받음
  • 만약 Mirrored 디스크가 독립적으로 고장난 경우, Mean time to failure가 100,000시간이고 Mean time to repair가 10시간이면 Mean time to data loss = 100,000² / (2*10) = 500 * 10⁶시간 = 57,000년
  • 쓰기 성능의 향상을 위해 자주 NVRAM과 결합
  • 여러 개의 디스크가 협력하여 작동하는 디스크 사용 기술의 많은 개선 사항이 존재

'Operating System [OS]' 카테고리의 다른 글

[OS] 10. File System Implementation  (1) 2024.01.03
[OS] 09. File System  (1) 2024.01.03
[OS] 08. Deadlocks  (1) 2024.01.02
[OS] 07. Synchronization Tools  (1) 2024.01.02
[OS] 06. Threads & Concurrency  (2) 2024.01.02