🧁
운영체제와 정보기술의 원리 - CH9. 디스크 관리
October 18, 2021
다음은 반효경 교수님의 ‘운영체제와 정보기술의 원리’ CH9. 디스크 관리를 읽고 정리한 내용입니다 🙌
🌩 들어가기 전
- 컴퓨터 시스템의 대표적인 2차 저장장치이다.
- 메모리는 휘발성이지만 디스크는 데이터를 영구저장할 수 있다.
🌩 1. 디스크의 구조
- 디스크 외부에서 디스크를 일정크기 저장공간들로 이루어진 1차원 배열로 취급한다.
- 그 저장공간들을 논리 블록 logical block 이라고 한다.
- 디스크에 데이터가 저장될 때 논리블록 단위로 저장되고, 입출력도 논리블록 단위로 전송된다.
- 데이터 접근을 위해 배열처럼 블록 인덱스를 디스크에 전달하고 디스크 컨트롤러가 해당 논리블록의 물리적 위치를 찾아 요청 데이터에 대한 입출력 작업을 수행한다.
- 섹터 sector - 논리 블록이 저장된 물리적 위치
- 논리블록과 섹터는 1대1 매핑
- 디스크는 마그네틱 원판들로 구성되며 원판은 트랙, 트랙은 섹터로 나뉜다.
- 원판의 동일한 위치의 트랙들을 실린더라고 부른다.
- 디스크의 가장 바깥 실린더의 첫 트랙의 첫 섹터가 섹터 0 이다.
- 데이터 입출력은 디스크의 암 arm이 섹터가 위치한 실린더로 이동하여 워판이 회전하고 디스크 헤드가 섹터 위치에 도달해야한다.
🌩 2. 디스크 스캐줄링
- 디스크 접근시간 access time: 탐색 시간 seek time, 회전지연 시간 rotational latency, 전송시간 transfer time 으로 구분된다
- 탐색시간 - 디스크 헤드를 해당 실린더 위치로 이동시키는 시간
- 회전지연시간 - 디스크게 회전해서 읽으려고 쓰는 섹터가 헤드 위치에 도달하는 시간
- 전송시간 - 섹터의 데이터가 실제로 섹터에 읽고 쓰는데 소요되는 시간
- 디스크 입출력 효율 향상 - 디스크 입출력의 접근시간을 최소화
- 회전지연시간과 전송시간은 수치가 작고 운영체제에서 통제하기 어려운 부분이다.
- 따라서 탐색시간을 줄여야한다.
- 디스크 스캐줄링 disk scheduling
- 여러 섹터들의 입출력 요청을 어떠한 순서로 처리할지 결정하는 매커니즘
- 가장 중요한 목표는 디스크 헤드의 이동거리를 줄이는 것
1) FCFS 스케줄링
- 디스크에 먼저 들어온 요청을 먼저 처리하는 방식이다.
- 효율성이 매우 떨어진다. 헤드가 긴 거리를 왕복하여 왔다갔다 할 수도 있다.
2) SSTF Shortest Seek Time First 스케줄링
- 헤드의 현재 위치로 가장 가까운 위치의 요청을 먼저 처리하는 알고리즘
- 디스크 입출력 효율성을 증가시키지만 기아 starvation 현상을 발생시킬 수 있다.
- 현재 헤드에서 가까운 요청이 계속 들어오면 떨어진 곳 요청은 무한대기해야한다.
- 그래도 이동거리 측면에서 가장 우수한 알고리즘은 아니다.
3) SCAN 알고리즘
- 헤드가 디스크 원판 안쪽 끝과 바깥쪽 끝을 오가며 경로에 존재하는 모든 요청을 처리한다.
- 디스크 어떤 위치에 요청이 오는지 상관없이 정해진 방향으로 이동하며 길에 있는 요청들을 처리한다.
- 한쪽 방향 끝으로 가면 다린 쪽 끝으로 방향을 바꾸어 그 경로 요청들의 다 처리한다.
- 엘리베이터와 비슷한 알고리즘이라서 엘리베이터 스캐줄링 알고리즘 elevator scheduling algorithm이라고 부르기도 한다.
- 너무 오래 기다리게 하거나 불필요한 헤드의 이동이 발생하지 않으므로 효율성과 형평성을 모두 만족하는 알고리즘이다.
- 하지만 가장 바깥쪽 실린더보다 가운데 위치한 실린더가 더 자주 서비스 받는 편차가 존재한다.
4) C-SCAN 알고리즘
- Circular-scan 알고리즘은 한쪽끝에서 다른 쪽 끝으로 이동하며 길목의 모든 요청을 처리한다.
- 하지만 헤드가 도달해 방향을 바꾸고 요청 처리보다 다시 출발점으로 이동만한다.
- 이동거리는 조금 길어지지만 탐색시간의 편차를 줄일 수 있다.
5) LOOK과 C-LOOK 알고리즘
-
SCAN 알고리즘은 요청 존재 여부와 관계없이 헤드가 무조건 디스크 한쪽 끝에서 다른 쪽 끝으로 이동한다.
-
LOOK 알고리즘은 헤드가 한쪽으로 이동하다가 그 방향에 대기중인 요청이 없다면 방향을 바꾼다.
-
C-LOOK은 LOOK 알고리즘에서 한쪽 방향으로 이동할 때만 요청을 처리하는 것이다. -
-
SCAN, C-SCAN, LOOK, C-LOOK 등의 알고리즘이 디스크 입출력이 많은 시스템에서 FCFS나 SSTF에 비해 효울적이다.
🌩 3. 다중 디스크 환경에서의 스캐줄링
- 다중 디스크를 사용
- 동일한 정보를 디스크에 중복 저장하여 인기있는 데이터를 여러 디스크에서 동시 서비스 할 수 있다.
- 일부 디스크 오류에도 지속적 서비스가 가능하다.
- 시스템 성능과 신뢰성을 동시에 향상시킨다.
- 다중 디스크 시스템에서는 작업을 수행할 디스크를 결정하는 문제도 처리해야한다.
- 스케줄링 목적에 따라 요청 처리 디스크를 결정하는 기준이 달라진다.
- 탐색시간을 줄이면 헤드의 위치가 데이터와 가장 가까운 디스크를 선택
- 거시적인 관점에서 디스크간의 부하균형 Load balancing 을 이루도록 스케줄링
- 최근에는 전력 소모를 줄이는 것이 중요한 목표이다.
- 일부 디스크에 요청을 집중시키고 나머지 디스크는 회전을 정지시키는 것이 효과적이다.
- 일부 디스크만으로 요청 처리가 가능한 경우에서만 성립된다.
🌩 4. 디스크의 저전력 관리
1) 비활성화 기법
- 전력 소모 기준으로 4가지 디스크의 상태
- 활동 active
- 현재 읽거나 쓰는 상태
- 공회전 idle
- 회전중이나 읽거나 쓰지는 않는 상태
- 준비 standby
- 회전하지 않지만 인터페이스가 활성화된 상태
- 휴면 sleep
- 회전하지도 않고 인터페이스도 비활성화된 상태
- 활동 active
- 활동과 공회전을 활성상태, 준비와 휴먼을 비활성 상태로 부른다.
- 비활성 상태는 회전이 일어나지 않으므로 요청이 없다면 비활성 상태가 절감 측면에서 좋다.
- 하지만 각 상태로 전환할 때 부가적인 전력 및 시간이 소모된다. 따라서 매번 비활성 상태로 바꾸는 것은 오히려 비효율적일 수 있다.
- 후속 요청까지 일정 시간 이상인 경우에만 회전을 정지 시키는 것이 전력 소모 절감에 좋다.
- 미래 요청 도착 시점과 간격을 잘 예측하는 것이 필요하다.
- 디스크 비활성 시점 결정하는 방법
- 시간기반 timeout based
- 예측기반 prediction based
- 확률기반 stochastic based
2) 회전속도 조절 기법
- Rotation Per Minute RPM을 가변적으로 조절하여 디스크 전력 소모를 줄인다.
3) 디스크의 데이터 배치 기법
- 디스크 내에 복제본 replica를 많이 만들어 헤드 위치에 가까운 복제본을 접근하도록 하여 응답시간과 전력 소모량을 절감한다.
- 쓰기연산의 일관성 문제가 있을 수 있으나, 가까운 복제본에만 데이터를 쓰고, 나머지 복제본들은 주소 테이블에서 무효화 연산을 수행하여 쓰기연산 효율성을 높일 수 있다.
4) 버퍼캐싱 및 사전인출 기법
- 디스크가 활성 상태일 때 헤드 위치로부터 가까운 데이터를 사전인출 prefetching 하여 디스크 비활성화 가능성을 높여 전력을 줄일 수 있다.
- 데드라인을 꼭 지켜야하는 요청이 아니라면 디스크의 활성상태 여부에 따라 요청을 지연시키는 방식도 사용한다.
- 통합하여, 디스크가 저전력 모드라면 입출력 처리를 최대한 지연시켰다가 디스크가 정상 전력 모드라면 사전인출을 공격적으로 해서 디스크의 상태 변화 횟수를 최소화하는 방법을 사용할 수 있다.
5) 쓰기전략을 통한 저전력 디스크 기법
- 해당 디스크가 비활성 상태일 때는 쓰기를 하지 않고 디스크가 활성 상태일 때 쓰는 방식으로 전력 소모를 젉감한다.
- 일단 블록들을 로그 디스크에 썼다가 디스크 활성 상태일 때 디스크에 쓰기연산을 수행하는 방식도 있다.