디스크의 구조
- 디스크 시스템이란 데이터를 저장하는 디스크 팩과 저장 또는 저장된 데이터를 읽어내는 장치인 디스크 드라이브(Drive)를 묶어 표현한 것이다.
- 디스크 팩은 전원이 끊겨도 데이터를 보존할 수 있는 저장 매체이며 여러 장의 원판 디스크로 이루어져 있다.
- 회전축에 의한 회전 동작과 붐(Boom)에 의한 전후 동작이 있는데 이 두 가지 동작이 연동되어 특정 위치에 헤드(Head)를 위치시키고 읽기나 쓰기가 이루어진다.
- 디스크의 한 면을 보면 여러 개의 트랙(Track)으로 구성되며 한 트랙은 다시 여러 개의 섹터(Sector)로 이루어진다.
- 데이터는 섹터 단위로 디스크에 쓰이거나 읽히는데 우리가 블록이라 부르는 것도 일반적으로 섹터의 크기이다.
- 섹터가 모여 트랙을 이루고, 트랙이 모여 한 면을 이루고 다시 여러 면이 모여 디스크 팩 전체 공간이 된다.
- 암(Arm)의 길이는 같기 때문에 헤드는 각 면의 같은 트랙에 위치하게 되고, 디스크 팩에서 동심원의 모든 트랙을 묶어 실린더(Cylinder)라 부른다.
디스크의 접근 시간
- 주어진 주소로부터 실린더 번호를 보고 헤드를 해당 트랙으로 이동하는 시간 (탐색 시간, Seek Time)
- 지정된 섹터가 회전하여 헤드 밑으로 이동하는 시간 (회전 지연 시간 , Rotational Delay or Latency Time)
- 섹터가 헤드 밑을 회전하는 동안 읽거나 쓰게 되는 시간 (전송 시간 , Transfer or Transmission Time)
디스크 스케줄링 기법의 평가 기준
- 단위 시간당 처리량 (Throughput) :
디스크 스케줄링은 단위 시간당 처리량을 최대화할 수 있어야 한다. 같은 시간에 보다 많은 디스크 입출력 요구들에 대해 서비스할 수 있어야 한다는 의미
- 평균 응답 시간 (Mean Response Time) :
디스크 스케줄링은 각 요구들에 대해 평균 응답 시간을 최소화할 수 있어야 한다. 디스크 입출력 요구들에 대해 가능하면 빠른 시간 내에 서비스를 제공할 수 있어야 한다는 의미
- 응답 시간의 예측성(Predictability) :
디스크 입출력 요구를 보낸 측에서 자신의 요청에 대한 서비스가 언제 끝날 것인지를 추측할 수 있는 점과 관련된 성능 평가 지표이다. 응답 시간의 분산을 줄이고 예측성을 높이는 스케줄링을 하게 되면 무기한 연기 등의 상황도 방지할 수 있게 된다.
디스크 스케줄링
FCFS(First Come First Served) 스케줄링 :
- 디스크 입출력 요청들을 도착한 순서대로 서비스하는 기법
- 스케줄링으로 인한 오버헤드가 작아 디스크 입출력에 대한 부하가 작을 경우 적합
SSTF(Shortest Seek Time First) 스케줄링 :
- 큐에 도착해 있는 요구 중 현재 헤드 위치로부터 가장 가까운 요구를 먼저 서비스
- 새로운 요청까지 포함해서 가장 가까운 요청을 처리
- 단위 시간당 처리량을 극대화하지만 헤드와 먼 요구들은 무기한 연기 상황이 나타남
SCAN 스케줄링
- 현재 헤드의 위치와 가장 가까운 위치에 대한 요구를 먼저 서비스하지만 현재 헤드의 진행 방향으로만 입출력 요구들을 처리하며 양 끝의 실린더에 도착했을 때에만 방향 전화하여 나머지 요구들을 처리
- SSTF 스케줄링의 응답 시간의 문제를 개선
LOOK 스케줄링
- 엘레베이터가 동작하는 방식과 비슷해서 엘리베이터 알고리즘이라고도 한다.
- 헤드가 진행하는 도중 진행 방향의 앞쪽으로 더 이상의 요구가 없으면 양끝의 실린더까지 진행하지 않는다.
- 헤드의 진행 방향 앞쪽으로 계속해서 디스크 요구가 들어오게 되면 반대 방향 요구의 대기 시간이 길어짐
C-SCAN 스케줄링
- 서비스 방향을 안쪽 또는 바깥쪽 중 한쪽으로 미리 정해놓고, 정해진 방향으로 헤드가 이동할 때에만 큐의 요구들을 처리하는 방법
- 한쪽 방향으로만 서비스를 진행하면서 양끝 부분의 트랙과 중앙 부분 트랙을 균등하게 서비스하는 기법
- 응답 시간에 대한 예측성이 매우 높은 기법이다.
SLTF(Shortest Latency Time)
- 섹터 큐잉(Sector Queueing) 이라고도 한다.
- 회전 지연 시간을 최적화하기 위한 기법
- 고정 헤드 디스크, 각 트랙마다 헤드를 갖는 드럼(Drum)에서 사용
- 각 섹터 별로 별도의 큐를 두어 관리
디스크 관리를 위하여
버퍼링 :
- 디스크에서 자주 참조되는 데이터를 주기억 장치 커널 공간의 버퍼(Buffer) 영역에 저장하여 관리
- 버퍼 영역에 적재되어 있는 디스크 블록에 대해서는 프로세스에 의한 연산이 있을 경우 디스크에 접근하지 않고 주기억 장치에 접근하는 것만으로도 연산을 수행한다.
- 다른 호스트나 프로세스에 의해 접근 가능한 경우에는 데이터의 일치성 문제를 고려해야 한다.
- 프로세스의 데이터 참조 패턴에 지역성(Locality)이 없는 경우 프로세스가 원하는 데이터가 주기억 장치 공간에 적재되어 있을 확률 즉, hit ratio가 매우 낮을 수 있으므로 버퍼링 기법이 큰 효과를 주지 못할 수 있다.
하드웨어 기반의 기법
- 디스크의 저장 밀도를 높인다.
- 디스크 팩의 회전 속도를 증가시킨다.
- 고정 헤드 디스크를 사용한다.
운영체제 기반의 기법
- 같은 데이터 블록을 디스크의 여러 곳에 중복 배치시킨다.
- 순차 데이터들을 디스크의 트랙에 격(Alternate) 섹터별로 배치시킨다.
- 디스크 데이터들을 필요할 때 재구성한다.
- 데이터 압축(Data Compression) 기법을 사용한다.
응용 시스템 기반의 기법
- 인덱스(Index)를 사용한다.
- 보조기억 장치 해싱(Hashing) 기법을 사용한다.
디스크 스트라이핑(Disk Striping)
- 디스크 시스템의 성능을 개선하기위한 방법으로 디스크 인터리빙(Disk Interleaving)이라고도 함
- 현재 많은 시스템에서 실제로 사용하는 기법
- 여러 개의 서브블록(스트립)으로 나누어 각 디스크 시스템에 하나씩 배치
- 특정 블록이 접근될 경우 각 디스크 시스템의 서브 블록들이 독립적이고 병렬로 접근
- 전체 디스크 시스템의 블록 접근 시간이 크게 단축
- 디스크 스트라이핑 시스템은 저가의 여러 디스크 시스템을 사용하여 논리적으로 하나의 디스크 시스템처럼 보이게 함으로써 고가의 디스크 시스템을 대체하는 효과
RAID(Redundant Array of Inexpensive Disks) 구조
- 디스크 시스템의 성능뿐 아니라 비용과 신뢰성 등 모두 고려하여 구성한 디스크 시스템의 형태
- 비용이 낮은 소규모 디스크들을 여러 개 사용하여 이를 배열 형태로 구성
RAID-0 :
- 디스크 스트라이핑, 데이터 중복 등과 관련된 개념을 사용하지 않아 신뢰성에 대한 고려 X
RAID-1 :
- 스트라이핑과 함께 미러링 개념 추가, 두 개 이상의 디스크에 같은 데이터 블록들을 중복, 저장하는 기법을 사용
- 하나의 디스크가 고장나도 다른 디스크를 통해 데이터 블록들이 유지되므로 신뢰성이 높음.
- 하나의 블록에 접근하기 위해 두 개 이상의 디스크에 접근이 가능하므로 가용성이 높음.
- 실제로 필요한 디스크 용량보다 2배 용량의 디스크 시스템을 구축해야 하므로 가격이 비쌈
RAID-2와 RAID-3 :
- RAID-2는 일부 디스크에 해밍 코드를 사용한 ECC 정보를 별도로 저장하도록 하지만 최근의 대부분의 디스크들이 ECC정보를 내부적으로 갖도록 되어 있기 때문에 많이 사용하지 않는다.
- RAID-3는 디스크 배열 내의 한 디스크로 하여금 패리티(Parity) 정보를 저장하도록 한다. 패리티는 훼손된 스트립을 복구할 수 있기 때문에 중복의 효과를 가진다.
- RAID-3는 단일 사용자, 단일 태스킹 시스템에서 사용된다.
RAID-4 :
- RAID-3와 같이 데이터를 보호하기 위해 스트라이핑된 블록들의 패리티 정보를 디스크 배열 내에 있는 별도의 한 디스크에 저장한다.
- 패리티 정보를 저장하는 디스크에 대한 병목현상이 나타나기 때문에 많이 사용되지 않는다.
RAID-5 :
- 회전 패리티 배열 개념을 사용한다.
- 패리티 정보를 저장하는 디스크를 하나로 고정시키지 않음으로써 병목현상의 발생을 억제
- 대규모의 스트라이프를 사용함으로써 여러 입출력들이 겹쳐 진행될 수 있도록 함
- 디스크의 고장이 있을 경우데도 어느 정도는 이를 복구할 수 있는 가능성 제공
- 다중 사용자 환경 및 큰 규모의 응용 프로그램에 적합
RAID-6 :
- 회전 패리티 배열을 기반으로 한다.
- 두 개의 다른 패리티 계산을 수행하여 서로 다른 디스크의 블록에 저장
- 매우 높은 가용성을 제공하는 반면, 데이터를 기록할 때마다 두 개의 패리티 블록에 반영해야 하는 부담
RAID 레벨은 각각 독립적으로 유지되며 높은 레벨이 낮은 레벨의 형태를 포함하지 않으므로, RAID 구조를 이용하기 위해서는 각 응용에 최적인 RAID 레벨을 선택하거나 몇 가지의 RAID 레벨을 복합하여 구성하는 것이 바람직하다.
참고 자료
- OS? Oh Yes! , 김주균 지음
- Operating System Concepts 8th
'OS' 카테고리의 다른 글
[OS] 파일시스템 (0) | 2020.05.11 |
---|---|
[OS] 가상 메모리의 관리 (0) | 2020.05.11 |
[OS] 가상 메모리 : 페이징과 세그먼테이션 (0) | 2020.05.10 |
[OS] 메모리 관리 (0) | 2020.05.10 |
[OS] 교착 상태(Deadlock) (0) | 2020.05.09 |