운영체제
8. 디스크 관리
YJH3968
2021. 4. 28. 14:47
728x90
1. 디스크의 구조
- 논리 블록(logical block) : 디스크에 데이터를 저장할 때 일정한 크기의 저장 공간 단위
- 논리 블록에 저장된 데이터에 접근하기 위해서는 배열을 접근하는 것처럼 해당 블록의 인덱스 번호를 디스크에 전달해야 한다.
- 섹터(sector) : 각 논리 블록이 저장되는 디스크 내 물리적인 위치. 즉, 논리 블록 하나가 섹터 하나와 1대1로 매핑되어 저장된다.
- 트랙(track) : 디스크의 물리적인 구조에서 마그네틱의 원판을 구성하는 하나의 원. 각 트랙은 섹터로 나뉜다.
- 실린더(cylinder) : 여러 개의 원판에서 상대적 위치가 동일한 트랙들의 집합
- 디스크에 데이터를 읽고 쓰기 위해서는 암(arm)이 해당 섹터가 위치한 실린더로 이동한 후 원판이 회전하여 디스크 헤드가 저장된 섹터 위치에 도달해야 한다.
2. 디스크 스케쥴링
- 디스크에 대한 접근시간(access time) = 탐색시간 + 회전지연시간 + 전송시간이다.
- 탐색시간(seek time) : 디스크 헤드를 해당 실린더 위치로 이동시키는 데 걸리는 시간
- 회전지연시간(rotational latency) : 디스크가 회전해서 읽고 쓰려는 섹터가 헤드 위치에 도달하기까지 걸리는 시간
- 전송시간(transfer time) : 해당 섹터가 헤드 위치에 도달한 후 데이터를 실제로 섹터에 읽고 쓰는데 소요되는 시간
- 디스크 접근시간을 최소화하기 위해서는 탐색시간, 회전지연시간, 전송시간을 줄여야 하나 회전지연시간, 전송시간은 상대적인 수치가 작고 운영체제 입장에서 통제하기 어렵다.
- 그래서 운영체제는 탐색시간을 줄이기 위해 헤드의 움직임을 최소화하는 스케쥴링 작업을 한다.
- 디스크 스케쥴링(disk scheduling) : 효율적인 디스크 입출력을 위해 여러 섹터들에 대한 입출력 요청이 들어왔을 때 이들을 어떠한 순서로 처리할 것인지 결정하는 매커니즘
- FCFS 스케쥴링 : 디스크에 먼저 들어온 요청을 먼저 처리하는 방식으로 헤드의 이동이 지나치게 많아 비효율적인 방법이다.
- SSTF(Shortest Seek Time First) 스케쥴링 : 헤드의 현재 위치로부터 가장 가까운 위치에 있는 요청을 제일 먼저 처리하는 알고리즘
- 헤드의 이동거리를 줄여 디스크 입출력의 효율성을 증가시키지만, 기아 현상을 발생시킬 수 있다. 즉, 현재 헤드 위치와 가까운 곳에서 지속적인 요청이 들어올 경우 헤드 위치에서 멀리 떨어진 곳의 요청은 무한히 기다려야 한다.
- 헤드의 이동거리 측면에서 가장 우수한 알고리즘은 아니다.
- SCAN 알고리즘 : 헤드가 디스크 원판의 안쪽 끝과 바깥쪽 끝을 오가며 그 경로에 존재하는 모든 요청을 처리하는 알고리즘
- 디스크의 어떠한 위치에 요청이 들어오는가와 상관없이 헤드는 정해진 방향으로 이동하면서 길목에 있는 요청들을 처리하며 지나간다.
- 엘리베이터에서 사용하는 알고리즘과 유사해 엘리베이터 스케쥴링 알고리즘이라고도 부른다.
- FCFS의 효율성 문제와 SSTF의 형평성 문제를 모두 해결하는 알고리즘이다.
- 하지만 모든 실린더 위치의 기다리는 시간이 공평한 것은 아니다. 중앙 실린더에 헤드가 두 번 지나가는 동안 가장 안쪽의 실린더와 가장 바깥쪽의 실린더는 한 번만 지나가기 때문이다.
- C-SCAN(Circular-SCAN) 알고리즘 : 헤드가 한쪽 끝에서 다른 쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리하나 다른 쪽 끝에 도달해 방향을 바꾼 후에는 요청을 처리하지 않고 곧바로 출발점으로 다시 이동만 하는 알고리즘
- SCAN보다 헤드의 이동거리는 조금 길어지지만 탐색시간의 편차를 줄일 수 있다.
- LOOK 알고리즘 : 헤드가 한쪽 방향으로 이동하다가 그 방향에 더 이상 대기 중인 요청이 없으면 헤드의 이동 방향을 즉시 반대로 바꾸는 알고리즘
- C-LOOK 알고리즘 : LOOK 알고리즘과 거의 같으나 C-SCAN처럼 한쪽 방향으로 이동할 때에만 요청을 처리한다.
- SCAN, C-SCAN, LOOK, C-LOOK 등의 스케쥴링 알고리즘이 FCFS나 SSTF에 비해 더 효율적인 것으로 알려져 있다.
3. 다중 디스크 환경에서의 스케쥴링
- 포털사이트 등 수많은 동시 사용자를 서비스하는 서버에서는 다수의 디스크를 함께 사용한다.
- 디스크를 여러 개 쓰는 경우 동일한 정보를 여러 디스크에 중복 저장해 인기 있는 데이터를 여러 디스크로부터 동시에 서비스할 수 있고, 일부 디스크에 오류가 발생해도 지속적인 서비스가 가능하며 정보의 유실을 방시할 수 있다. 이를 통해 시스템의 성능과 신뢰성을 향상시킬 수 있다.
- 이때 디스크 스케쥴링을 할 경우 작업을 수행할 디스크를 결정하는 문제도 고려해야 한다. 이 경우 여러 디스크 중 헤드의 현재 위치가 요청한 데이터와 가장 가까운 디스크를 선택해 디스크 간의 부하균형을 이루도록 스케쥴링하는 것이 중요하다.
- 전력 소모를 줄이는 것도 디스크 관리의 목표로 인식되고 있다. 이를 위해서는 모든 디스크에 요청을 골고루 분산시키기보다는 일부 디스크에 요청을 집중시키고 나머지 디스크는 회전을 정지시키는 것이 더 효과적이다. 단, 이는 일부 디스크만으로 요청이 충분히 처리할 수 있을 정도로 요청이 적은 경우에 한해 성립한다.
4. 디스크의 저전력 관리
- 디스크 상태는 전력 소모를 기준으로 크게 활동 상태, 공회전 상태, 준비 상태, 휴면 상태로 나누어볼 수 있다.
- 활동(active) 상태 : 헤드가 데이터를 읽거나 쓰는 상태
- 공회전(idle) 상태 : 디스크가 회전 중이지만 데이터를 읽거나 쓰지는 않는 상태
- 준비(standby) 상태 : 디스크가 회전하지 않지만 인터페이스가 활성화된 상태
- 휴면(sleep) 상태 : 디스크가 회전하지 않고 인터페이스도 비활성화된 상태
- 편의상 활동 상태와 공회전 상태를 활성 상태, 준비 상태와 휴면 상태를 비활성 상태라고 부른다.
- 비활성 상태에서 전력 소모가 적으므로 요청이 없을 경우 디스크를 정지시키는 것이 전력 절감 측면에서 효과적이다.
- 하지만 각 상태로 전환할 때 부가적인 전력 및 시간이 소모되기 떄문에, 후속 요청까지의 시간 간격이 일정 시간 이상일 경우에만 디스크의 회전을 정지시키는 것이 전력 소모를 절감하는 데 효과적이다.
- 즉, 미래의 요청이 도착하는 시점과 간격을 정확히 예측하는 것이 중요하다.
- 디스크를 비활성화하는 시점을 결정하는 방법으로는 시간기반 기법과 예측기반 기법, 확률기반 기법이 있다.
- 시간기반(timeout based) 기법 : 일정 시간 동안 디스크가 공화전 상태이면 장치를 정지시켰다가 다시 요청이 들어오면 디스크를 활성화하는 방법
- 예측기반(prediction based) 기법 : 과거 요청을 관찰해 다음 공회전 구간의 길이를 예측한 후 디스크를 비활성화할 시점을 결정하는 방법
- 확률기반(stochastic based) 기법 : 디바이스의 상태변경 시간 간격을 구하기 위해 확률분포를 통해 요청을 모델링하고 마르코프 체인 등과 같은 통계적 모델을 이용하는 방법
5. Swap-Space Management
- Disk를 사용하는 두 가지 이유
- 메모리의 휘발성 → file system
- 프로그램 실행을 위한 메모리 공간 부족 → swap space
- swap-space
- 가상 메모리 시스템에서는 디스크를 메모리의 연장 공간으로 사용
- 파일시스템 내부에 둘 수도 있으나 별도 partition 사용이 일반적
- 공간 효율성보다는 속도 효율성이 우선된다.
- 일반 파일보다 훨씬 짧은 시간만 존재하고 자주 참조된다.
- 따라서 block의 크기 및 저장 방식이 일반 파일시스템과 다르다.
6. RAID
- Redundant Array of Independent Disks
- 여러 개의 디스크를 묶어서 사용한다.
- RAID의 사용 목적
- 디스크 처리 속도 향상 : 여러 디스크에 block의 내용을 분산 저장한 뒤 병렬적으로 읽어 오기에(interleaving, striping) 처리 속도가 향상된다.
- 신뢰성 향상 : 동일 정보를 여러 디스크에 중복 저장해 하나의 디스크가 고장(failure) 시 다른 디스크에서 읽어올 수 있도록 한다.(mirroring, shadowing) 단순한 중복 저장이 아니라 일부 디스크에 parity를 저장해 공간의 효율성을 높일 수 있다.
출처 : 운영체제와 정보기술의 원리
728x90