본문 바로가기

OS

[OS] 디스크와 스케줄링

 

디스크의 구조

  • 디스크 시스템이란 데이터를 저장하는 디스크 팩과 저장 또는 저장된 데이터를 읽어내는 장치인 디스크 드라이브(Drive)를 묶어 표현한 것이다.
  • 디스크 팩은 전원이 끊겨도 데이터를 보존할 수 있는 저장 매체이며 여러 장의 원판 디스크로 이루어져 있다.

참조 : Operating System Concepts 8th

  • 회전축에 의한 회전 동작과 붐(Boom)에 의한 전후 동작이 있는데 이 두 가지 동작이 연동되어 특정 위치에 헤드(Head)를 위치시키고 읽기나 쓰기가 이루어진다.
  • 디스크의 한 면을 보면 여러 개의 트랙(Track)으로 구성되며 한 트랙은 다시 여러 개의 섹터(Sector)로 이루어진다.
  • 데이터는 섹터 단위로 디스크에 쓰이거나 읽히는데 우리가 블록이라 부르는 것도 일반적으로 섹터의 크기이다.
  • 섹터가 모여 트랙을 이루고, 트랙이 모여 한 면을 이루고 다시 여러 면이 모여 디스크 팩 전체 공간이 된다.
  • 암(Arm)의 길이는 같기 때문에 헤드는 각 면의 같은 트랙에 위치하게 되고, 디스크 팩에서 동심원의 모든 트랙을 묶어 실린더(Cylinder)라 부른다.

디스크의 접근 시간

  1. 주어진 주소로부터 실린더 번호를 보고 헤드를 해당 트랙으로 이동하는 시간 (탐색 시간, Seek Time)
  2. 지정된 섹터가 회전하여 헤드 밑으로 이동하는 시간 (회전 지연 시간 , Rotational Delay or Latency Time)
  3. 섹터가 헤드 밑을 회전하는 동안 읽거나 쓰게 되는 시간 (전송 시간 , Transfer or Transmission Time)

디스크 스케줄링 기법의 평가 기준

 

  • 단위 시간당 처리량 (Throughput) :

디스크 스케줄링은 단위 시간당 처리량을 최대화할 수 있어야 한다. 같은 시간에 보다 많은 디스크 입출력 요구들에 대해 서비스할 수 있어야 한다는 의미

  • 평균 응답 시간 (Mean Response Time) : 

디스크 스케줄링은 각 요구들에 대해 평균 응답 시간을 최소화할 수 있어야 한다. 디스크 입출력 요구들에 대해 가능하면 빠른 시간 내에 서비스를 제공할 수 있어야 한다는 의미

  • 응답 시간의 예측성(Predictability) :

디스크 입출력 요구를 보낸 측에서 자신의 요청에 대한 서비스가 언제 끝날 것인지를 추측할 수 있는 점과 관련된 성능 평가 지표이다. 응답 시간의 분산을 줄이고 예측성을 높이는 스케줄링을 하게 되면 무기한 연기 등의 상황도 방지할 수 있게 된다.


디스크 스케줄링

 

FCFS(First Come First Served) 스케줄링 :

  • 디스크 입출력 요청들을 도착한 순서대로 서비스하는 기법
  • 스케줄링으로 인한 오버헤드가 작아 디스크 입출력에 대한 부하가 작을 경우 적합

참조 : Operating System Concepts 8th


SSTF(Shortest Seek Time First) 스케줄링 :

  • 큐에 도착해 있는 요구 중 현재 헤드 위치로부터 가장 가까운 요구를 먼저 서비스
  • 새로운 요청까지 포함해서 가장 가까운 요청을 처리
  • 단위 시간당 처리량을 극대화하지만 헤드와 먼 요구들은 무기한 연기 상황이 나타남

참조 : Operating System Concepts 8th


SCAN 스케줄링

  • 현재 헤드의 위치와 가장 가까운 위치에 대한 요구를 먼저 서비스하지만 현재 헤드의 진행 방향으로만 입출력 요구들을 처리하며 양 끝의 실린더에 도착했을 때에만 방향 전화하여 나머지 요구들을 처리
  • SSTF 스케줄링의 응답 시간의 문제를 개선

참조 : Operating System Concepts 8th


LOOK 스케줄링

  • 엘레베이터가 동작하는 방식과 비슷해서 엘리베이터 알고리즘이라고도 한다.
  • 헤드가 진행하는 도중 진행 방향의 앞쪽으로 더 이상의 요구가 없으면 양끝의 실린더까지 진행하지 않는다.
  • 헤드의 진행 방향 앞쪽으로 계속해서 디스크 요구가 들어오게 되면 반대 방향 요구의 대기 시간이 길어짐

참조 : Operating System Concepts 8th


C-SCAN 스케줄링

  • 서비스 방향을 안쪽 또는 바깥쪽 중 한쪽으로 미리 정해놓고, 정해진 방향으로 헤드가 이동할 때에만 큐의 요구들을 처리하는 방법
  • 한쪽 방향으로만 서비스를 진행하면서 양끝 부분의 트랙과 중앙 부분 트랙을 균등하게 서비스하는 기법
  • 응답 시간에 대한 예측성이 매우 높은 기법이다.

참조 : Operating System Concepts 8th


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