Skip to main content

[OS] Chapter 12. 디스크 관리

운영체제와 정보기술의 원리 강의를 듣고 공부한 노트입니다.




디스크의 구조 #

디스크의 구조
Image Source

  • 논리블록(logical block)
    • 디스크의 단위 정보 저장 공간이다.
    • 디스크에 데이터가 저장될 때나 입출력이 일어날 때, 이 논리블록 단위로 저장, 전송된다.
    • 디스크 외부에서는 디스크를 논리블록들로 이루어진 1차원 배열처럼 취급한다.
  • 섹터(sector)
    • 디스크 내에서 논리블록이 저장되는 물리적인 위치이다.
    • 섹터가 0이면 최외곽 실린더의 첫 번째 트랙에 있는 첫 번째 섹터이다.



디스크 관리 #

  • (1) physical-formatting (low-level formatting)
    • 디스크를 컨트롤러가 읽고 쓸 수 있도록 섹터들로 나누는 과정이다.
    • 각 섹터는 header + 실제 data(보통 512bytes) + trailer로 구성된다.
    • headertrailer는 sector number, ECC(error-collecting code)등의 정보가 저장되며, 컨트롤러가 직접 접근 및 운영한다.

  • (2) partitioning
    • 디스크를 하나 이상의 실린더 그룹으로 나누는 과정이다.
    • 운영체제는 이것을 독립적인 디스크(logical disk)로 취급한다.

  • (3) logical-formatting
    • 파일시스템을 만드는 것이다.
    • FAT, inode, free space 등의 구조가 포함된다.

  • (4) booting
    • ROM에 저장되어 있는 small bootstrap loader를 실행하는 것이다.
    • 실행하면, full bootstrap loader program이 있는 섹터 0을 로드해서 실행한다.
    • 그러면, 운영체제의 커널을 찾아서 그것을 로드해서 실행한다.



디스크 스케줄링 #

  • 디스크 접근 시간(access time)
    • 탐색시간(seek time)
      • 헤드를 해당 실린더로 움직이는데 걸리는 시간
    • 회전지연시간(rotational latency)
      • 디스크가 회전해서 읽고 쓰려는 섹터가 헤드 위치에 도달하기까지 걸리는 시간
    • 전송시간(transfer time)
      • 해당 섹터가 헤드에 도달한 후 데이터를 실제로 섹터에 읽고 쓰는 데 소요되는 시간

  • 회전지연시간, 전송시간은 상대적인 수치가 작을 뿐 아니라 운영체제가 통제하기 힘든 부분이다.
    • 따라서 운영체제는 탐색시간을 줄이기 위해 헤드의 움직임을 최소화하는 스케줄링 작업을 한다.
    • 그렇다면 여러 섹터들에 대한 입출력 요청이 들어왔을 때 이들을 어떤 순서로 처리할 것인가?

(1) FCFS 스케줄링 #

  • First Come First Served
  • 디스크에 먼저 들어온 요청을 먼저 처리한다.

(2) SSTF 스케줄링 #

  • Shortest Seek Time First
  • 헤드의 현재 위치로부터 가장 가까운 위치에 있는 요청을 먼저 처리한다.
  • 기아 현상(starvation) 을 발생시킬 수 있다.
    • 헤드 위치에서 멀리 떨어진 곳의 요청은 무한히 기다려야한다.

(3) SCAN 알고리즘 #

  • 헤드가 정해진 방향으로 이동하면서 길목에 있는 요청들을 처리하며 지나간다.
  • 엘리베이터 스케줄링 알고리즘(elevator scheduling algorithm)이라고도 부른다.
  • 탐색시간의 편차가 있다.
    • 제일 안쪽, 바깥쪽에 비해서 가운데 위치가 기다리는 평균시간이 더 짧다.

(4) C-SCAN 알고리즘 #

  • Circular-SCAN
  • 헤드가 정해진 방향으로 이동하면서 길목에 있는 요청들을 처리하는 것은 SCAN과 똑같지만, 끝에 도달하면 요청을 처리하지 않고 출발점으로 이동만 하는 방식이다.
  • 이동거리는 길어지지만, 탐색시간의 편차를 줄이기 위함이다.

(5) LOOK과 C-LOOK 알고리즘 #

  • 헤드가 한쪽 방향으로 이동하다가, 더 이상 그 방향에 대기 중인 요청이 없으면 헤드 진행 방향을 바꾸는 방식이다.



다중 디스크 환경에서의 스케줄링 #

  • 다중 디스크 환경에서의 스케줄링은 그 목표에 따라 결정이 달라진다.
    • 탐색시간 줄이기
      • 헤드의 현재 위치가 요청한 데이터와 가장 가까운 디스크를 선택한다.
    • 디스크 간의 부하균형(load balancing)
      • 모든 디스크에 요청이 골고루 분배되도록 스케줄링한다.
    • 전력소모 줄이기
      • 일부 디스크에 요청을 집중시키고 나머지 디스크는 회전을 정지시킨다.



스왑 영역 관리 #

  • 디스크를 사용하는 두 가지 이유
    • (1) 메모리의 휘발성 해결을 위해 → 파일 시스템
    • (2) 메모리의 공간 부족 해결을 위해 → 스왑 영역

파일 시스템과 스왑 영역
Image Source

  • 스왑 영역
    • 가상 메모리 시스템에서 디스크를 메모리의 연장 공간으로 사용한다.
    • 파일 시스템과 별도의 파티션을 사용하는 것이 일반적이다.
      • 일반 파일보다 훨씬 짧은 시간만 존재하고 자주 참조되므로, 공간 효율성보다는 속도 효율성이 우선시 된다.
      • 따라서, 블록의 크기 및 저장 방식이 일반 파일 시스템과 다르다.



RAID #

  • Redundant Array of Independent Disks
  • 디스크 여러개를 묶어서 함께 사용하는 것이다.

  • RAID의 사용 목적
    • 디스크 처리 속도 향상
      • 여러 디스크에 블록의 내용을 분산 저장한다. 그리고 병렬적으로 읽는다. (interleaving, striping)
    • 신뢰성(reliability) 향상
      • 동일한 정보를 디스크에 중복 저장한다. 하나의 디스크가 고장나도 다른 디스크에서 읽어올 수 있다. (mirroring, shadowing)
      • 단순한 중복 저장이 아니라, 일부 디스크에 parity를 저장해서 공간 효율성을 높일 수도 있다.