[OS] Disk Management

애이용·2021년 6월 13일
0

OS

목록 보기
11/16

Disk Structure

logical block
디스크 외부에서는 디스크를 일정한 크기의 저장 공간들로 이루어진 1차원 배열들로 취급하게 된다. 이러한 단위 정보 저장 공간들을 논리 블록(logical block)이라고 한다.

  • 디스크의 외부에서 보는 디스크의 단위 정보 저장 공간들
  • 주소를 가진 1차원 배열처럼 취급
  • 디스크에 데이터가 저장될 때 논리 블록 단위로 저장되고, 디스크 외부로 입출력이 일어날 때에도 논리 블록 단위로 전송된다. (정보를 전송하는 최소 단위)

Sector
논리 블록에 저장된 데이터에 접근하기 위해서는 배열에 접근하는 것처럼 해당 블록의 인덱스 번호를 디스크에 전달해야 한다.
이때 각 논리 블록이 저장되는 디스크 내의 물리적인 위치를 섹터(sector)라고 한다.

  • Logical block이 물리적인 디스크에 매핑된 위치
    논리 블록 하나가 섹터 하나와 1대 1로 매핑되어 저장되는 것이다.
  • Sector 0은 최외각 실린더의 첫 트랙에 있는 첫 번째 섹터이다.

디스크의 물리적인 구조는 마그네틱의 원판으로 구성된다.
하나의 디스크 내의 원판의 수는 하나일 수도 있고, 여러 개일 수도 있다.
각각의 원판은 트랙(track)으로 구성되고, 각 트랙은 섹터(sector)로 나뉜다.

여러 개의 원판에서 상대적인 위치가 동일한 트랙들의 집합을 실린더(cylinder)라고 한다.

디스크에 데이터를 읽고 쓰기 위해서는 arm이 해당 섹터가 위치한 실린더로 이동(앞뒤) 후 원판이 회전하여 디스크 헤더가 저장된 섹터 위치에 도달하여야 한다.

Disk Management

  • Physical formatting(Low-level formatting)
    • 디스크를 컨트롤러가 읽고 쓸 수 있도록 섹터들로 나누는 과정
    • 섹터header + 실제 data(보통 512 bytes) + trailer로 구성된다.
    • header와 trailer는 sector number, ECC(Error-Correcting Code) 등의 정보가 저장되며 컨트롤러가 직접 접근 및 운영한다.
  • Partitioning
    • 디스크를 하나 이상의 실린더 그룹으로 나누는 과정
    • OS는 이것을 독립적 disk로 취급
  • Logical formatting
    • 파일 시스템을 만드는 것
    • FAT, inode, free space 등의 구조를 포함한다.
  • Booting
    • ROM에 있는 "small bootstrap loader"의 실행
    • Sector 0은 (boot block)을 load하여 실행 ("full Bootstrap loader program"

      Sector 0 : 최외각 실린더의 첫 트랙에 있는 첫 번째 섹터

    • OS를 디스크에서 load하여 실행

Disk Scheduling

✔️ Access time의 구성
디스크에 대한 접근 시간은 탐색 시간과 회전 지연 시간, 전송 시간으로 구성된다.

  • 탐색 시간(Seek time) : 가장 오래 걸린다. (회전 지연 시간의 10배 정도)
    헤더를 해당 실린더로 움직이는 데(앞뒤) 걸리는 시간
  • 회전 지연 시간(Rotational latency)
    헤더가 원하는 섹터에 도달하기까지 걸리는 회전 지연 시간
  • 전송 시간(Transfer time)
    실제 데이터의 전송 시간

✔️ Disk bandwidth
단위 시간당 전송된 바이트의 수

✔️ Disk Scheduling
seek time을 최소화하는 것이 목표이다
(Seek time ~= Seek distance)

  • 디스크 스케줄링 알고리즘
    • FCFS (First Come First Service)
      디스크에 먼저 들어온 요청을 먼저 처리하는 알고리즘
    • SSTF (Shortest Seek Time First)
      헤더의 현재 위치부터 가장 가까운 위치에 있는 요청을 제일 먼저 처리하는 알고리즘
    • SCAN
      • disk arm이 디스크의 한쪽 끝에서 다른쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리한다.
      • 다른 한쪽 끝에 도달하면 역방향으로 이동하며 오는 길목에 있는 모든 요청을 처리하며 다시 반대쪽 끝으로 이동한다.
      • 문제점 : 실린더 위치에 따라 대기 시간이 다르다 (보완 : C-SCAN)
    • C-SCAN
      • SCAN과 달리 헤더가 다른쪽 끝에 도달해 방향을 바꾼 후에는 요청을 처리하지 않고, 곧바로 출발점으로 다시 이동만 한다.
      • 헤드의 이동거리는 조금 길어질 수 있지만, 탐색시간의 편차를 줄일 수 있다.
    • LOOK
      한쪽 방향으로 이동 중이다가 그 방향으로 전방에 더이상 대기 중인 요청이 없으면, 곧바로 반대 방향으로 바꾸는 스케줄링 방식
    • C-LOOK
      LOOK 알고리즘에서 한쪽 방향으로 이동할 때만 요청을 처리한다.

문제

큐에 다음과 같은 실린더 위치의 요청이 존재하는 경우 디스크 헤드 53번에서 시작한 각 알고리즘의 수행 결과는? (실린더 위치는 0 - 199)

98, 183, 37, 122, 14, 124, 65, 67

혼자 풀어보는 걸로 ~_~

profile
로그를 남기자 〰️

0개의 댓글