[OS] Chapter 12. 디스크 관리
Table of Contents
운영체제와 정보기술의 원리 강의를 듣고 공부한 노트입니다.
디스크의 구조 #
- 논리블록(logical block)
- 디스크의 단위 정보 저장 공간이다.
- 디스크에 데이터가 저장될 때나 입출력이 일어날 때, 이 논리블록 단위로 저장, 전송된다.
- 디스크 외부에서는 디스크를 논리블록들로 이루어진 1차원 배열처럼 취급한다.
- 섹터(sector)
- 디스크 내에서 논리블록이 저장되는 물리적인 위치이다.
- 섹터가 0이면 최외곽 실린더의 첫 번째 트랙에 있는 첫 번째 섹터이다.
디스크 관리 #
- (1) physical-formatting (low-level formatting)
- 디스크를 컨트롤러가 읽고 쓸 수 있도록 섹터들로 나누는 과정이다.
- 각 섹터는
header
+실제 data
(보통 512bytes) +trailer
로 구성된다. header
와trailer
는 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)
- 해당 섹터가 헤드에 도달한 후 데이터를 실제로 섹터에 읽고 쓰는 데 소요되는 시간
- 탐색시간(seek 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) 메모리의 공간 부족 해결을 위해 → 스왑 영역
- 스왑 영역
- 가상 메모리 시스템에서 디스크를 메모리의 연장 공간으로 사용한다.
- 파일 시스템과 별도의 파티션을 사용하는 것이 일반적이다.
- 일반 파일보다 훨씬 짧은 시간만 존재하고 자주 참조되므로, 공간 효율성보다는 속도 효율성이 우선시 된다.
- 따라서, 블록의 크기 및 저장 방식이 일반 파일 시스템과 다르다.
RAID #
- Redundant Array of Independent Disks
- 디스크 여러개를 묶어서 함께 사용하는 것이다.
- RAID의 사용 목적
- 디스크 처리 속도 향상
- 여러 디스크에 블록의 내용을 분산 저장한다. 그리고 병렬적으로 읽는다. (interleaving, striping)
- 신뢰성(reliability) 향상
- 동일한 정보를 디스크에 중복 저장한다. 하나의 디스크가 고장나도 다른 디스크에서 읽어올 수 있다. (mirroring, shadowing)
- 단순한 중복 저장이 아니라, 일부 디스크에 parity를 저장해서 공간 효율성을 높일 수도 있다.
- 디스크 처리 속도 향상