디스크 관리
by Frinee이 글은 반효경 저 - "운영체제와 정보기술의 원리"를 공부하고 정리하여 작성하였습니다.
1. 디스크의 구조
- 디스크는 컴퓨터 시스템의 대표적인 비휘발성 2차 저장장치이다.
- 디스크는 논리블록이라 부르는 일정한 크기의 저장공간들로 이루어진 1차원 배열로 취급함
- 디스크가 저장 시에나 디스크 외부로 입출력이 일어날 때에도 논리블록 단위로 발생함.
- 데이터 접근 과정
- 논리블록에 저장된 데이터를 접근하기 위해선 배열을 접근하는 것처럼 해당 블록의 인덱스 번호를 디스크에 전달함.
- 디스크 컨트롤러는 해당 논리블록에 저장된 물리적 위치를 찾아 요청된 데이터에 대한 입출력 작업 수행
- 섹터(sector): 각 논리블록이 저장되는 디스크 내 물리적 위치, 논리블록 하나와 1대1 매핑
- 물리적 구조
- 디스크의 물리적 구조는 마그네틱의 원판으로 구성됨.
- 각각의 원판은 트랙(track)으로 구성되고 각 트랙은 섹터로 나뉘며 섹터에 최소한의 단위 정보가 저장됨.
- 실린더(cylinder): 여러 개의 원판에서 상대적 위치가 동일한 트랙들의 집합
- 디스크에 데이터를 읽고 쓰기 위해서 암(arm)이 해당 섹터가 위치한 실린더로 이동 후 원판이 회전하여 디스크 헤드가 저장된 섹터 위치에 도달해야 함.
2. 디스크 스케줄링
- 디스크에 대한 접근 시간은 탐색 시간, 회전지연시간, 전송시간으로 구분됨.
- 탐색시간: 디스크 헤드를 해당 실린더 위치로 이동시키는 데 걸리는 시간 (r방향 이동)
- 회전지연시간: 디스크가 회전해서 읽고 쓰려는 섹터가 헤드 위치에 도달하기까지의 시간 (ω 방향 이동)
- 전송시간: 해당 섹터가 헤드 위치에 도달한 후 데이터를 실제로 섹터에 읽고 쓰는 데 소요되는 시간
- 디스크 입출력 효율을 높이기 위해선 접근시간을 최소화해야 하는데 이때 탐색시간을 줄이기 위한 디스크 스케줄링이 작동함.
- 디스크 스케줄링: 효율적인 디스크 입출력을 위해 여러 섹터들에 대한 입출력 요청이 들어왔을 때 이들을 어떠한 순서로 처리할 것인지 결정하는 메커니즘
2.1. FCFS(First Come First Served) 스케줄링
- 디스크에 먼저 들어온 요청을 먼저 처리하는 방식을 말함.
- 합리적이지만 효율성이 매우 떨어짐.
2.2. SSTF(Shortest Seek Time First) 스케줄링
- 헤드의 현재 위치로부터 가장 가까이 있는 요청을 제일 먼저 처리하는 방식
- 헤드의 이동거리를 줄여 디스크 입출력의 효율성이 오르지만 기아 현상을 발생시킬 수 있음
2.3. SCAN 알고리즘
- 헤드가 디스크 원판의 안쪽 끝과 바깥쪽 끝을 오가며 그 경로에 존재하는 모든 요청을 처리함.
- 요청의 위치와 상관없이 헤드가 정해진 방향으로 이동하면서 만나면 처리함.
- 엘리베이터 스케줄링 알고리즘이라고도 부름.
- 만약 그 방향으로 요청이 더 이상 없으면 방향을 바꾸어 진행함.
- 이동거리 측면에서 매우 효율적이나 일부 요청이 지나치게 오래 기다릴 수 있음
2.4. C-SCAN 알고리즘
- SCAN처럼 헤드가 한쪽 끝에서 다른 쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리함
- 그러나 헤드가 다른 쪽 끝에 도달한 경우 방향을 바꿔 출발점으로 이동만 함.
- 이동시간은 조금 길어지지만 탐색시간의 편차를 줄일 수 있음.
2.5. LOOK과 C-LOOK 알고리즘
- LOOK 알고리즘은 SCAN과 달리 그 방향에 더 이상 대기 중인 요청이 없으면 즉시 이동방향을 반대로 바꾸는 스케줄링 방식
- C-LOOK 알고리즘은 전방에 요청이 없을 때 방향을 바꾸는 측면에서 LOOK과 유사하며, 한쪽 방향으로 이동할 때에만 요청을 처리한다는 점에서 C-SCAN과 유사함
3. 다중 디스크 환경에서의 스케줄링
- 수많은 동시 사용자를 서비스하는 서버는 다수의 디스크를 함께 사용함
- 동일한 정보를 여러 디스크에 중복 저장하여 인기 있는 데이터를 여러 디스크로부터 동시에 서비스할 수 있음
- 그리고 일부 디스크에 오류가 발생해도 지속적인 서비스가 가능하고 정보의 유실을 방지할 수 있음
- 다중 디스크 환경에서는 어느 디스크에서 요청을 처리할지 결정하는 스케줄링 문제가 발생
- 이런 경우 스케줄링 목표에 따라 기준이 달라진다.
- 거시적인 관점에서는 각 디스크 간 부하균형을 이루는 것이 중요함.
- 최근에는 전력 소모를 줄이는 것이 디스크 관리의 새로운 목표가 되고 있음. 이 경우는 디스크를 몰아넣는 것이 더 효과적
4. 디스크의 저전력 관리
4.1. 비활성화 기법
- 디스크의 상태는 전력 소모를 기준으로 4가지로 나눌 수 있음
- 활동(active): 현재 헤드가 데이터를 읽거나 쓰고 있는 상태
- 공회전(idle): 디스크는 회전 중이지만 데이터를 읽거나 쓰진 않은 상태
- 준비(standby): 디스크는 회전하지 않지만 인터페이스가 활성화된 상태
- 휴면(sleep): 디스크가 회전하지 않고 인터페이스도 비활성화된 상태
- 비활성화 상태에서 디스크를 읽는 작업이 활성 상태일 때보다 전력이 많이 소모됨
- 후속 요청까지의 시간 간격이 일정 시간 이상일 경우에만 디스크의 회전을 정지시키는 것이 전력 소모를 절감하는 데 효과적
- 이는 장치를 비활성화할 시점을 결정하기 위해 미래의 요청 시점을 맞추는 것이 중요함
- 디스크 비활성화 시점 결정
- 시간기반 기법: 일정 시간 동안 디스크가 공회전 상태이면 장치를 정지하고 다시 요청이 왔을 때 디스크를 활성화
- 예측기반 기법: 과거 요청을 관찰하여 다음 공회전 구간의 길이를 예측한 후 디스크를 비활성화할 시점을 결정
- 확률기반 기법: 디바이스의 상태변경 시간 간격을 구하기 위해 확률분포를 통해 요청을 모델링하고 마르코프 체인 등과 같은 통계적 모델을 이용
4.2. 회전속도 조절 기법
- 디스크의 전력 소모를 줄이기 위해 최근에는 디스크의 회전속도를 가변적으로 조절하는 기법이 제안
- 운영체제는 시스템 자원과 부하를 포괄적으로 볼 수 있기 때문에 하드웨어 혼자서 전력관리를 하는 거세에 비해 더 많은 절감효과를 얻을 수 있음
- 최근에는 워크로드의 특성을 활용해 회전속도를 조절하려는 시도락 이루어짐
- 멀티미디어 환경에서는 시간에 따른 순차적 데이터 접근이 이루어져 주기성과 규칙성을 활용해 참조에 대한 예측이 가능함.
- 전력 소모를 최소화하기 위해 실시간 응용프로그램 재생률(bit rate)과 버퍼 크기에 따라 디스크의 회전속도를 조절해서 전력 소모를 최소화하는 기법도 제안됨
4.3. 디스크의 데이터 배치 기법
- 디스크 용량 발전에 비해 디스크 접근 속도는 크게 발전하지 않음
- 디스크 내에 데이터 복제본을 많이 만들어 헤드 위치에서 가까운 복제본에 접근하게 하여 응답시간과 전력 절감을 얻는 FS2 파일 시스템이 제안됨
- 복제본이 있는 경우, 쓰기 연산에서 일관성 문제가 발생할 수 있으나 FS2에서는 헤드의 위치에서 가까운 복제본에 데이터를 쓰면 나머니는 주소 테이블에 무효화 연산을 수행해 쓰기연산의 효율성도 높임
4.4. 버퍼캐싱 및 사전인출 기법
- 예측이 가능한 경우 디스크가 활성 상태일 때 헤드위치로부터 가까운 데이터를 사전인출하여 디스크의 비활성화 가능성을 높여 전력 소모를 줄일 수 있음
- 긴급한 요청이 아닌 경우, 디스크 활성 상태 여부에 따라 요청을 지연시켜 전력소모를 줄임
- 이 둘을 통합하여 디스크가 저전력 모드일때는 입출력 처리를 최대한 지연시키고 정상 전력 모드로 돌아오면 사전인출을 공격적으로 시행
4.5. 쓰기전략을 통한 저전력 디스크 기법
- 저장장치의 데이터에 대한 쓰기전략을 통해 전력 소모를 줄이는 기법 제안
- 비활성 상태일 때는 디스크 쓰기를 하지 않고 대기
- 활성 상태일 때는 쓰는 방식으로 전력 소모를 줄이는 방
자료
- 운영체제와 정보기술의 원리 (반효경 저, 2020.5)
블로그의 정보
프리니의 코드저장소
Frinee