9장, 디스크 관리
디스크(disk)?
컴퓨터 시스템의 대표적인 2차 저장장치
메모리는 휘발성(volatile) 저장장치 이므로 데이터를 영구히 저장하기 위한 2차 저장장치는 필수적이다.
디스크 구조

디스크는 일정한 크기의 저장공간들로 이뤄진 1차원 배열로 취급하는데, 이때 일정한 크기의 저장공간을 논리 블록(logical block)이라고 한다.
섹터(Sector) : 논리 블록이 저장되는 디스크 내의 물리적인 위치, 트랙을 구성하는 것, 최소한의 단위 정보 저장
트랙(Track) : 디스크의 마그네틱 원판을 구성하는 것
실린더(Cylinder) : 원판에서 상대적 위치가 동일한 트랙들의 집합
암(arm) : 디스크에 데이터를 읽고 쓰기 위한 것
디스크 스케줄링
디스크에 대한 접근시간(Access time)은 탐색 시간(Seek time)과 회전 지연시간(rotational latency), 전송시간(transfer time)으로 구분된다.
탐색 시간 : 디스크 헤드를 해당 실린더 위치로 이동시키는 데 걸리는 시간
회전 지연시간 : 디스크가 회전하여 읽고 쓰려는 섹터가 헤드 위치에 도달하기까지 걸리는 시간
전송시간 : 해당 섹터가 헤드 위치에 도착한 후 데이터를 읽고 쓰는 데 소요되는 시간
접근시간의 최소화를 위해 헤드의 움직임을 최소화하는 디스크 스케줄링 방식을 사용한다.
1. FCFS 스케줄링
먼저 들어온 요청을 먼저 처리한다.

2. SSTF(Shortest Seek Time First) 스케줄링
헤드의 현재 위치로부터 가장 가까운 위치에 있는 요청을 제일 먼저 처리한다.
기아 현상(starvation) 발생 가능

3. SCAN 알고리즘
헤드가 원판의 안쪽 끝과 바깥쪽 끝을 오가며 경로에 존재하는 모든 요청을 처리한다.
효율성과 형평성을 모두 만족

4. C-SCAN(Circular-SCAN) 알고리즘
SCAN과 동일하게 한쪽 끝에서 다른 쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리하지만, 다른 쪽에 도달하여 방향을 바꾼 후에는 요청을 처리하지 않고 출발점으로 곧바로 이동한다.

5. LOOK 알고리즘
SCAN과 동일하게 양쪽으로 이동하며 요청을 찾지만, 가는 방향에 더 이상 처리할 요청이 없으면 바로 방향을 바꾼다.

6. C-LOOK 알고리즘
전방에 요청이 없으면 방향을 바꾸고, 한쪽 방향으로 이동할 때에만 요청을 처리한다.

다중 디스크 환경의 장점
- 데이터를 여러 디스크로부터 동시에 서비스할 수 있다
- 디스크 오류에도 지속적인 서비스가 가능하다
- 정보의 유실을 방지할 수 있다
다중 디스크 환경에서의 스케줄링
어떤 디스크에서 요청을 처리할지 결정해야 하는데, 이때의 스케줄링은 목적에 따라 나뉜다.
- 탐색 시간 줄이기 : 헤드의 현재 위치가 요청한 데이터의 위치와 가장 가까운 디스크 선택
- 부하 균형 : 디스크가 과부하 상태에 이르지 않고 모든 디스크에 요청이 골고루 분배되도록 디스크 선택
- 전력 소모 줄이기 : 소수의 디스크만을 사용할 수 있도록 디스크 선택 (부하 편향)
저전력 관리 기법
- 비활성화 기법
디스크 상태는 활동(active), 공회전(idle), 준비(standby), 휴면(sleep) 네 가지 상태로 나뉜다. 비활성 상태(준비상태와 휴면 상태)에서 전력 소모가 적다. 전력 소모를 줄이기 위해 디스크를 비활성화해야 하는데, 디스크의 비활성화 시점을 결정하는 방법에는 3가지 방법이 있다.
- 시간 기반(timeout based) 기법 : 일정 시간 디스크가 공회전 상태이면 장치를 정지시킨다.
- 예측 기반(prediction based) 기법 : 과거 요청을 관찰하여 다음 공회전 구간의 길이을 예측 하여 비활성화 시점을 결정한다.
- 확률 기반(stochastic based) 기법 : 확률 분포를 통해 요청을 모델링하여 상태 변경 시간 간격을 구한다. - 회전 속도 조절 기법
디스크의 회전 속도(Rotations Per Minute : RPM)를 가변적으로 조절하는 기법
워크로드의 특성을 활용하여 회전 속도를 조절하거나, 실시간 응용프로그램의 재생률(bit rate)과 버퍼 크기에 따라 회전 속도를 조절하는 방법이 있다. - 디스크의 데이터 배치 기법
디스크의 빈 공간에 데이터의 복제본을 많이 만들어 가장 가까운 복제본에 접근하도록 하는 방법. 데이터의 일관성 문제가 발생할 수 있다. FS2 파일 시스템에서는 복제본에 데이터를 쓰고, 나머지 복제본은 무효화하는 방법으로 쓰기 연산의 효율성을 높였다. - 버퍼 캐싱 및 사전인출 기법
미래 요청 데이터를 어느 정도 예측할 수 있다면, 헤드 위치로부터 가까운 데이터를 사전인출(preferching)하여 전력 소모를 줄인다. 디스크의 활성 상태에 따라 요청을 지연시키고, 정상 전력 모드로 돌아왔을 때 공격적으로 사전 인출하여 디스크의 상태 변화 횟수를 최소화한다. - 쓰기 전략을 통한 저전력 디스크 기법
쓰기 전략(wrtie strategy)
- 디스크가 비활성 상태일 때에는 쓰지 않고 기다렸다가, 활성 상태로 돌아왔을 때 쓰는 방식(write-back with eager updates)
- 디스크가 비활성 상태일 때에는 로그 디스크에 쓰고, 활성 상태로 돌아왔을 때 쓰기 연산을 수행하는 방식(write-through with deferred update)
참고자료
'IT Basic > Operating System' 카테고리의 다른 글
[OS] OS 캐시와 분산 (0) | 2023.01.16 |
---|---|
[OS] 8장 가상메모리 (0) | 2022.01.05 |
데드락(Deadlock, 교착상태)에 대해 (0) | 2021.12.30 |
[OS] 7장 메모리 관리 (0) | 2021.12.28 |
[OS] 6장 CPU 스케줄링 (0) | 2021.12.28 |
댓글