운영체제 공룡책

[운영체제 공룡책] 11장 Mass -Storage Structure

studyingalone 2025. 3. 19. 18:01

11.1 대용량 저장장치 구조

현대 컴퓨터의 보조 저장장치는 주로 하드 디스크 드라이브(HDD)비휘발성 메모리(NVM) 장치로 구성

 


11.1.1 하드 디스크 드라이브(HDD)

1. 구조와 개념

  • HDD는 여러 개의 디스크 플래터(platter)로 구성되며, 각 플래터는 자기적 데이터를 저장할 수 있는 원형 구조를 가짐.
  • 플래터의 양면에는 자기 코팅층이 있으며, 데이터를 기록하거나 읽을 때 읽기-쓰기 헤드(read-write head)가 자기 패턴을 감지함.
  • 디스크 암(disk arm)이 여러 개의 헤드를 하나의 유닛으로 이동시키며, 플래터 표면은 트랙(track)으로 나뉘고, 트랙은 다시 섹터(sector)로 구분됨.
  • 같은 위치의 트랙들을 실린더(cylinder)라고 하며, 일반적으로 수천 개 이상의 실린더와 수백 개의 섹터가 존재함.

HDD 무빙 헤드 디스크 메커니즘

 

2. 성능과 작동 방식

  • HDD는 회전 속도(RPM, Revolutions Per Minute)에 따라 성능이 결정되며, 일반적으로 5,400 / 7,200 / 10,000 / 15,000 RPM으로 동작.
  • 성능 관련 요소:
    • 전송 속도(Transfer rate): 데이터를 디스크에서 컴퓨터로 전송하는 속도.
    • 탐색 시간(Seek time): 디스크 암이 원하는 실린더로 이동하는 데 걸리는 시간.
    • 회전 지연(rotational latency): 원하는 섹터가 헤드 아래로 이동하는 시간.

11.1.2 비휘발성 메모리(NVM) 장치

비휘발성 메모리(NVM, Nonvolatile Memory)는 전자적 방식으로 데이터를 저장하며, 대표적으로 플래시 메모리(flash memory) 기반 NVM이 널리 사용


11.1.2.2 NAND 플래시 컨트롤러 알고리즘

1. 플래시 변환 계층(FTL, Flash Translation Layer) 활용

  • 기존 데이터를 덮어쓸 수 없으므로, 새로운 페이지에 데이터를 저장하고, 기존 페이지는 무효화됨.
  • FTL(Flash Translation Layer)은 어떤 물리적 페이지에 유효한 데이터가 저장되었는지 매핑하여 관리.

2. 가비지 컬렉션(Garbage Collection) 및 오버 프로비저닝(Over-Provisioning)

  • 가비지 컬렉션(GC):
    • 유효한 데이터를 새로운 위치로 옮기고, 무효한 데이터를 포함한 블록을 삭제하여 공간 확보.
    • GC 실행 시, 성능 저하 발생 가능.
  • 오버 프로비저닝(OP):
    • 일부 저장 공간을 예비로 남겨두고, 필요할 때만 사용하여 성능 및 내구성 향상.
    • 보통 SSD의 20% 정도가 OP 영역으로 할당됨.

3. 웨어 레벨링(Wear Leveling) 및 오류 정정 코드(ECC)

  • 특정 블록이 지나치게 많이 쓰이면 수명이 단축되므로, 컨트롤러가 덜 사용된 블록을 선택적으로 사용하여 수명을 균등하게 분배.
  • 오류 정정 코드(ECC, Error-Correcting Code)를 사용하여 데이터 손상을 감지하고 복구 가능하도록 설계됨.

11.1.3 휘발성 메모리(Volatile Memory)

RAM 디스크는 DRAM의 일부를 저장 장치처럼 사용하는 기술이다. 비휘발성 저장 장치보다 속도가 훨씬 빠르지만, 전원이 꺼지면 데이터가 손실된다. 주로 임시 파일 저장, 프로그램 간 데이터 공유, 부팅 시 임시 루트 파일 시스템(initrd) 등에 사용된다.


11.1.4 보조 저장 장치 연결 방식 (Secondary Storage Connection Methods)

저장 장치는 시스템 버스 또는 I/O 버스를 통해 연결된다. 대표적인 인터페이스로 SATA, SAS, USB, FC(파이버 채널) 등이 있다. 저장 장치는 컨트롤러를 통해 데이터를 전송하며, DMA(Direct Memory Access)를 활용하여 성능을 향상시킨다.


11.1.5 주소 매핑

저장 장치는 논리 블록 주소(LBA) 방식으로 접근되며, 이는 물리적 섹터 또는 페이지에 매핑된다. HDD는 상수 각속도(CAV) 방식을 사용하여 모든 트랙에서 데이터 전송 속도를 일정하게 유지한다.


11.2 HDD 스케줄링

운영체제는 하드웨어를 효율적으로 사용하는 역할을 하며, HDD의 경우 접근 시간을 최소화하고 데이터 전송 대역폭을 최대화하는 것이 목표다.


11.2.1 FCFS(First-Come, First-Served) 스케줄링

  • 가장 단순한 디스크 스케줄링 방식으로 요청 순서대로 처리한다.
  • 공정하지만, 헤드 이동이 비효율적일 수 있다.
  • 예를 들어, 98 → 183 → 37 → 122 → 14 → 124 → 65 → 67 순서로 요청이 들어오면 헤드 이동 거리가 커져 성능이 떨어진다.

FCFS disk scheduling


11.2.2 SCAN(엘리베이터) 스케줄링

  • 디스크 헤드가 한쪽 끝에서 반대쪽 끝으로 이동하며 요청을 처리하고, 끝에 도달하면 방향을 바꿔 반대쪽으로 이동하며 다시 요청을 처리하는 방식.
  • 요청이 많은 쪽에서 먼저 처리되므로 FCFS보다 효율적이다.
  • 하지만 한쪽 끝에 가까운 요청들은 빨리 처리되지만, 반대쪽에 있는 요청들은 오래 기다려야 하는 문제가 있다.

SCAN disk scheduling


11.2.3 C-SCAN(Circular SCAN) 스케줄링

  • SCAN과 유사하지만, 디스크 헤드가 한쪽 끝까지 이동한 후 반대쪽 끝으로 돌아올 때는 요청을 처리하지 않고 이동만 한다.
  • 모든 요청의 대기 시간을 보다 균일하게 유지할 수 있어 SCAN보다 공정성이 높다.

C-SCAN disk scheduling


11.3 NVM Scheduling

NVM(Non-Volatile Memory) 장치는 물리적인 헤드가 없고 일반적으로 FCFS(First-Come, First-Served) 방식으로 스케줄링한다.

  • NOOP 스케줄러(리눅스): 단순 FCFS 방식이지만, 인접한 요청을 병합하여 처리 속도를 높인다.
  • SSD 스케줄링 최적화: 읽기 요청은 FCFS로 처리하되, 쓰기 요청만 병합하여 성능 최적화.

11.4 오류 검출 및 수정(Error Detection and Correction)

1. 오류 검출(Error Detection)

  • 패리티 비트(Parity Bit):
    • 각 바이트마다 1의 개수를 짝수 또는 홀수로 맞추는 방식
    • 단일 비트 오류는 검출 가능하지만, 이중 비트 오류는 검출하지 못할 수도 있음
    • XOR 연산을 활용하여 패리티 계산
  • 체크섬(Checksum):
    • 데이터의 합계를 특정 방식으로 계산하여 오류 검출
  • CRC(Cyclic Redundancy Check, 순환 중복 검사):
    • 다중 비트 오류를 검출하기 위해 해시 함수 사용
    • 네트워크 및 스토리지 시스템에서 널리 활용됨

2. 오류 수정(Error Correction)

  • ECC(Error Correction Code, 오류 정정 코드)
    • 오류를 감지할 뿐만 아니라 자동으로 수정 가능
    • 추가적인 스토리지를 사용하여 오류를 복구할 수 있도록 설계됨
    • HDD: 섹터 단위 ECC, SSD: 페이지 단위 ECC 적용
  • ECC 동작 방식
    1. 데이터가 저장될 때 ECC 코드도 함께 저장
    2. 데이터를 읽을 때 ECC를 다시 계산하여 저장된 값과 비교
    3. 차이가 있으면 오류 발생 → 수정 가능하면 복구, 불가능하면 하드 에러 발생

11.5 저장장치관리(Storage Device Management)

11.5.1 Drive Formatting, Partitions, and Volumes

새로운 저장 장치는 초기화가 필요하며, 이를 위해 물리적 포맷(physical formatting, 저수준 포맷)이 수행된다. 대부분의 드라이브는 공장에서 포맷되며, 운영체제는 이를 사용하기 위해 논리적 포맷(logical formatting, 파일 시스템 생성)을 수행한다.

  • 파티션: 저장 장치를 여러 개의 논리적 영역으로 나누며, 각각을 독립적인 드라이브처럼 사용 가능하다.
  • 볼륨: 하나의 파티션을 직접 사용할 수도 있고, 여러 파티션을 결합하여 하나의 논리적 저장 장치로 사용할 수도 있다.
  • 파일 시스템 생성: 운영체제는 저장 장치에 파일 시스템을 생성하여 데이터 저장을 가능하게 한다.
  • RAW I/O: 일부 응용 프로그램(예: 데이터베이스)은 파일 시스템을 거치지 않고 저장 장치를 직접 사용할 수도 있다.

11.6 스왑 공간 관리 (Swap-Space Management)

11.6.1 스왑 공간의 사용(Swap-Space Use)

  • 스왑 공간은 운영 체제의 메모리 관리 방식에 따라 다르게 사용됨.
  • 스와핑(Swapping) 시스템에서는 전체 프로세스 이미지를 저장하는 용도로 사용됨.
  • 페이징(Paging) 시스템에서는 메모리에서 밀려난 개별 페이지를 저장하는 용도로 사용됨.
  • 필요한 스왑 공간의 크기는 물리 메모리 크기, 가상 메모리 사용 방식에 따라 다름.
  • 스왑 공간이 부족하면 시스템이 강제 종료되거나 충돌할 수 있으므로 과소할당보다 과대할당이 더 안전함.

11.6.2 스왑 공간의 위치(Swap-Space Location)

  • 스왑 공간은 파일 시스템 내 파일 또는 전용 파티션에 위치할 수 있음.
  • 파일 시스템 기반 스왑 공간
    • 일반적인 파일로 생성되며 파일 시스템의 할당 및 관리 기능을 활용함.
    • 동적으로 크기 조정이 가능하지만, 파일 시스템의 오버헤드로 인해 성능이 저하될 수 있음.
  • 전용 파티션 기반 스왑 공간
    • 파일 시스템 없이 운영되며, 스왑 전용 관리자를 사용하여 블록을 할당 및 해제함.
    • 빠른 접근 속도를 제공하지만, 미리 고정된 크기로 할당되므로 확장이 어렵다는 단점이 있음.

11.7 저장 장치 연결 (Storage Attachment)

컴퓨터는 호스트 연결 저장 장치(Host-Attached Storage), 네트워크 연결 저장 장치(Network-Attached Storage, NAS), 클라우드 저장 장치(Cloud Storage) 세 가지 방식으로 보조 저장 장치에 접근함.


11.7.1 호스트 연결 저장 장치 (Host-Attached Storage)

  • 호스트 시스템의 I/O 포트를 통해 직접 연결된 저장 장치를 의미함.
  • 대표적인 연결 기술: SATA, USB, FireWire, Thunderbolt
  • I/O 명령어를 통해 논리적 데이터 블록을 특정 저장 장치에 읽기/쓰기 가능.

11.7.2 네트워크 연결 저장 장치 (Network-Attached Storage, NAS)

Network-attached storage

  • 네트워크를 통해 접근하는 저장 장치로, 일반적인 파일 서버 또는 특수 스토리지 장치로 구성됨.
  • 클라이언트는 원격 프로시저 호출(RPC) 인터페이스를 통해 NAS에 접근함.
  • 파일 공유 및 동시 접근 가능:
    • 여러 사용자가 동일한 NAS에 연결하여 홈 디렉터리에 동시에 접근 가능.
  • 성능: NAS는 로컬 저장 장치보다 속도가 느리고, 일부 직접 연결 저장 장치보다 성능이 떨어질 수 있음.

11.7.3 클라우드 저장 장치 (Cloud Storage)

  • 인터넷(WAN)을 통해 원격 데이터 센터에 저장 공간을 제공하는 방식으로, 일반적으로 유료 서비스.
  • NAS와 클라우드 저장 장치의 차이점
    • NAS: 로컬 네트워크(LAN)에서 CIFS/NFS/iSCSI 프로토콜을 사용하여 파일 시스템처럼 접근 가능.
    • 클라우드 저장 장치: API 기반으로 접근해야 하며, 일반적으로 파일 시스템처럼 직접 연결되지 않음.
  • 클라우드 저장 장치는 API를 사용하는 이유
    • WAN은 LAN보다 지연(latency)이 크고, 네트워크 연결이 끊길 가능성이 높음.
    • NAS 프로토콜(NFS, CIFS)은 연결이 끊기면 시스템이 멈출 가능성이 있음.
    • 클라우드 저장 장치는 API를 사용하여 연결이 끊기면 일시 정지 후 복구 가능.

아래는 몰라도 될듯