OS? Oh Yes! 책을 바탕으로 학습한 내용입니다.
디스크의 구조
전원이 끊겨도 데이터를 보존할 수 있는 저장 매체이며 여러 장의 원판 디스크로 이루어져있다. 회전축에 의한 회전 동작과 붐(Boom)에 의한 전후 동작으로 헤드(Head)를 위치시켜 읽기 또는 쓰기를 수행한다.
- 트랙(Track)
디스크의 한 면
- 섹터(Sector)
데이터를 쓰거나 읽는 단위, 섹터가 모여서 트랙이 된다.
트랙 사이의 갭은 트랙을 구분하기 위함이고 섹터 사이의 갭은 데이터의 정상적인 읽기, 쓰기를 위함이다.(디스크의 회전 속도를 올리기 위함)
- 실린더(Cylinder)
디스크 팩에서 동심원의 모든 트랙을 묶은 것
- 이동 헤드 디스크
헤드가 트랙을 옮겨다님
- 고정 헤드 디스크
각 트랙마다 헤드가 존재함
디스크의 데이터 접근
디스크 시스템에서 특정 섹터에 대한 주소지정은 실린더(또는 트랙)번호, 표면번호, 섹터 번호의 순서로 이루어진다. 논리적인 주소지정은 데이터 전체 블록들에 번호를 부여하여 임의의 블록에 접근할 수 있도록 한다.
디스크에서의 접근 시간은 다음의 세 가지 시간을 합친 것이다.
- 탐색 시간(Seek Time)
헤드를 트랙으로 이동시키는 시간
- 회전 지연 시간(Rotational Delay 또는 Latency Time)
섹터가 회전하여 헤드 밑으로 오는데 걸리는 시간
- 전송 시간(Transfer 또는 Transmission Time)
헤더가 데이터를 읽거나 쓰는 시간
디스크 스케쥴링
디스크 스케쥴링 평가 기준
- 단위 시간당 처리량(Throughput)
- 평균 응답 시간(Mean Response Time)
- 응답 시간의 예측성(Predictability)
예측성 판단을 위해 응답 시간들의 분산을 이용한다. 응답 시간들의 분산과 예측성은 반비례한다.
디스크 스케쥴링
- FCFS(First Come First Served)
요청이 도착한 순서대로 서비스하는 기법
- SSTF(Shortest Seek Time First)
현재 큐에 있는 요청들 중 현재 헤드의 위치에서 가장 가까운 요구를 서비스하는 방법, 단위 시간당 처리량을 극대화, 예측성 저하, 무기한 연기 가능성, 대화형 시스템에 부적합
- SCAN
현재 헤드의 위치와 가장 가까운 위치에 대한 요청을 먼저 서비스 하지만 현재 헤드의 진행 방향으로만 처리한다. 마지막 실린더에 도착했을 때만 방향 전환을 한다. SSTF의 낮은 응답 시간 예측성을 개선
- LOOK
SCAN과 유사하지만 헤드가 진행하는 도중 진행 방향의 앞쪽으로 더 이상의 요청이 없으면 양 끝의 실린더까지 진행하지 않고 그 자리에서 방향을 바꾼다. 항상 마지막 실린더까지 진행하는 SCAN의 단점을 개선
- N-step SCAN
SCAN을 기반으로 헤드가 방향을 바꾸는 시점에서 큐에 대기 중인 요청들만 서비스한다. 무기한 연기의 가능성이 완전히 사라진다.
- C-SCAN(Circular SCAN)
N-step SCAN을 기반으로 서비스 방향을 안쪽 또는 바깥쪽으로 설정하고 정해진 방향으로 헤드가 이동할 때만 큐의 요구들을 처리하는 것이다. 마지막 실린더에 도착하면 요청에 대한 처리 없이 반대쪽 마지막 실린더로 이동한다. 양끝 부분의 트랙과 중앙 부분 트랙을 균등하게 서비스하여 응답 시간의 편차를 극소화하는 기법
- C-LOOK
C-SCAN에서 현재 요청이 존재하는 실린더까지만 이동하고 반대쪽 마지막 실린더로 이동한다.
- Eschenbach
헤드가 진행하는 과정에서 각 실린더에 대해 디스크팩의 한 번 회전시간 동안만 입출력 요청을 처리하는 기법, 한 회전 동안 서비스를 받지 못한 요구들에 대한 처리는 다음으로 미룬다. 탐색 시간의 최적화와 회전 지연 시간의 최적화를 동시에 추구하는 기법
- Sector Queueing 또는 SLTF(Shortest Latency Time First)
회전 지연 시간의 최적화를 위한 기법으로 각 섹터별로 별도의 큐를 두어 관리하며 하나의 실린더 또는 트랙에 대한 여러 개의 입출력 요구가 도착할 경우 각 섹터별로 설정되어 있는 큐에 삽입한다. 헤드의 탐색 시간이 끝나고 특정 실린더에 도착한 뒤에 헤드 아래에 먼저 도착하는 순서대로 각 섹터에 대한 서비스를 진행한다.
디스크 관리
디스크 시스템의 성능 증대를 위한 방법
-
하드웨어 기반
- 디스크 저장 밀도를 높인다.
- 디스크 팩의 회전 속도를 증가시킨다.
- 고정 헤드 디스크를 사용한다.
-
운영체제 기반
- 데이터 블록을 디스크의 여러 곳에 중복 배치시킨다.
- 순차 데이터들을 디스크의 트랙에 격 섹터별로 배치시킨다.
- 디스크 데이터들을 필요할 때 재구성한다.
- 데이터 압축 기법을 사용한다.
-
응용 시스템 기반
- 인덱스를 사용한다.
- 보조기억 장치 해싱 기법을 사용한다.
-
버퍼링(Buffering)
디스크에서 자주 참조되는 데이터를 주기억 장치 커널 공간의 버퍼 영역에 저장하여 관리하는 기법
-
디스크 스트라이핑(Disk Striping) 또는 디스크 인터리빙(Disk Interleaving)
여러 개의 디스크 시스템들을 논리적인 하나의 디스크 시스템으로 보이도록 하는 것, 저장될 데이터는 스트립(Strip 또는 Sub-block)이라는 작은 단위로 나뉘어져 각 디스크 시스템에 번갈아가며 순차적으로 저장된다. 따라서 데이터 접근시 모든 디스크 시스템들에게 입출력이 공평하게 분배된다.
-
RAID(Redundant Array of Inexpensive Disks) 구조
RAID 정리
디스크 시스템의 성능뿐만 아니라 비용과 신뢰성 등을 모두 고려하여 구성한 디스크 시스템의 형태를 말한다.
- RAID-0
디스크 스트라이핑 시스템으로 신뢰성에 대해서는 고려하지 않았다.
- RAID-1
미러링(Mirroring) 개념을 추가하여 두 개 이상의 디스크에 같은 데이터 블록들을 중복 저장하는 기법을 사용한다. 신뢰성, 가용성이 높지만 가격이 비싸다. 다중 사용자 시스템에 좋다.
- RAID-2
섹터 스트라이핑 개념 사용, 일부 디스크에 해밍코드를 사용한 ECC 정보를 별도로 저장하도록 하지만 최근 대부분의 디스크들이 ECC 정보를 내부적으로 갖도록 되어 있기 때문에 사용되지 않는다.
- RAID-3
섹터 스트라이핑 개념 사용, 디스크 배열 내의 한 디스크에 패리티(Parity) 정보를 저장하도록 한다. 패리티는 훼손된 스트립을 복구할 수 있기 때문에 중복의 효과를 지닌다. 단일 사용자 시스템에 좋다.
- RAID-4
RAID-3와 같은 구조, 패리티 정보를 저장하는 디스크에 대한 병목현상으로 사용하지 않는다.
- RAID-5
회전 패리티 배열(Rotating Parity Array) 개념 사용, 패리티 정보를 저장하는 디스크를 하나로 지정하지 않음으로써 병목 현상 발생을 억제시킨다. 대규모 스트라이프를 사용함으로써 여러 입출력들이 겹쳐 진행될 수 있도록 한다. 다중 사용자환경 또는 대규모 시스템에 적합
- RAID-6
회전 패리티 배열 개념 사용, 두 개의 다른 패리티 계산을 수행하여 서로 다른 디스크의 블록에 저장한다. 매우 높은 가용성을 지니지만 데이터를 기록할 때 마다 두 개의 패리티 블록에 반영해야하는 부담이 있다.