<운영체제와 정보기술의 원리> 반효경 저
1. 디스크의 구조
디스크의 물리적인 구조는 마그네틱의 원판으로 구성된다. 원판은 트랙(track)으로 구성되고 각 트랙은 섹터로 나뉘며, 섹터에 최소한의 단위 정보가 저장된다.
- 섹터(sector): 각 논리블록이 저장되는 디스크 내의 물리적인 위치
- 실린더(cylinder): 여러 개의 원판에서 상대적 위치가 동일한 트랙들의 집합
디스크에 데이터를 읽고 쓰기 위해서 암(arm)이 해당 섹터가 위치한 실린더로 이동한 후 원판이 회전하여 디스크 헤드가 저장된 섹터 위치해 도달해야 한다.
2. 디스크 스케줄링
디스크의 접근시간(access time)은 탐색시간(seek time)과 회전지연시간(rotational latency), 전송시간(transfer time)으로 구분된다.
- 탐색시간: 디스크 헤드를 해당 실린더 위치로 이동시키는 데 걸리는 시간
- 회전지연시간: 디스크가 회전해서 읽고 쓰려는 섹터가 헤드 위치에 도달하기까지 걸리는 시간
- 전송시간: 해당 섹터가 헤드 위치에 도달한 후 데이터를 섹터에 읽고 쓰는 데 소요되는 시간
디스크 입출력의 효율을 높이기 위해서는 소요되는 접근시간을 최소화해야 한다. 운영체제는 탐색시간을 줄이기 위해 헤드의 움직임을 최소화하는 스케줄링 작업을 한다.
- 디스크 스케줄링: 효율적인 디스크 입출력을 위해 여러 섹터들에 대한 입출력 요청이 들어왔을 때 이들을 어떠한 순서로 처리할 것인지 결정하는 메커니즘
💡 실린더 위치에 입출력 요청이 99 184 36 123 15 125 66 68 순서대로 들어왔다고 가정해보자. 이 디스크는 200개의 실린더를 가지고 있으며, 실린더 0은 디스크 원판의 가장 안쪽 실린더이고 199는 가장 바깥쪽 실린더라고 하자. 현재 디스크 헤드는 54번 실린더에 있다.
FCFS(First Come First Served) 스케줄링
- 디스크에 먼저 들어온 요청을 먼저 처리하는 방식
- 54 → 99 → 184 → 36 → 123 → 15 → 125 → 66 → 68
합리적인 것처럼 보이지만 효율성이 매우 떨어진다. 탐색시간이 매우 비효율적으로 늘어날 위험이 있다.
SSTF(Shortest Seek Time First) 스케줄링
- 헤드의 현재 위치로부터 가장 가까운 위치에 있는 요청을 제일 먼저 처리하는 알고리즘
- 54 → 66 → 68 → 36 → 15 → 99 → 123 → 125 → 184
헤드의 이동거리를 줄여 디스크 입출력의 효율성을 증가시키지만 자칫 기아 현상(starvation)을 발생시킬 수 있다. 현재의 헤드 위치로부터 가까운 곳에서 지속적인 요청이 들어올 경우 헤드 위치에서 멀리 떨어진 곳의 요청은 무한히 기다려야 하는 문제가 발생할 수 있기 때문이다.
SCAN 알고리즘
- 헤드가 디스크 원판의 안쪽 끝과 바깥쪽 끝을 오가며 그 경로에 존재하는 모든 요청을 처리하는 알고리즘
- 54 → 36 → 15 → 0 → 66 → 68 → 99 → 122 → 125 → 184
FCFS처럼 불필요한 헤드의 이동이 발생하거나 SSTF처럼 일부 지역이 지나치게 오래 기다리는 현상이 발생하지 않는다. 즉 효율성과 형평성을 모두 만족하는 알고리즘이다. 하지만 모든 실린더 위치의 기다리는 시간이 공평한 것은 아니다. 제일 안쪽이나 제일 바깥쪽 위치보다는 가운데 위치가 기다리는 평균시간이 더 짧기 때문이다.
C-SCAN(Circular-SCAN) 알고리즘
- SCAN 알고리즘의 위치에 따른 탐색시간의 편차를 보완하기 위해 제안된 알고리즘
SCAN과 달리 헤드가 다른 쪽 끝에 도달해 방향을 바꾼 후에는 요청을 처리하지 않고 곧바로 출발점으로 다시 이동만 한다. 즉 SCAN보다 헤드의 이동거리는 조금 길어지지만 탐색시간의 편차를 줄일 수 있다는 것이 장점이다.
- 54 → 66 → 68 → 99 → 123 → 125 → 184 → 199 → 0 → 15 → 36
LOOK과 C-LOOK 알고리즘
- LOOK: SCAN과 유사하나 헤드가 한쪽 방향으로 이동하다가 그 방향에 더 이상 대기 중인 요청이 없으면 헤드의 이동 방향을 즉시 반대로 바꾸는 스케줄링 방식
- C-LOOK: 전방에 요청이 없을 때 방향을 바꾼다는 측면에서는 LOOK과 유사하며, 한쪽 방향으로 이동할 때에만 요청을 처리한다는 점에서 C-SCAN과 유사한 알고리즘
- 54 → 66 → 68 → 99 → 123 → 125 → 184 → 15 → 36
3. 다중 디스크 환경에서의 스케줄링
다중 디스크를 사용하면 시스템의 성능과 신뢰성을 동시에 향상시킬 수 있는데, 이러한 환경에서는 같은 데이터가 저장되어 있는 여러 개의 디스크 중 어느 디스크에서 요청을 처리할지 결정하는 스케줄링 문제가 발생한다.
스케줄링 목표에 따라 요청을 처리할 디스크를 결정하는 기준이 달라진다. 예를 들어 탐색시간을 줄이는 것이 목표라면 헤드의 현재 위치가 요청한 데이터와 가장 가까운 디스크를 선택하는 방법을 사용할 수 있다. 좀 더 거시적인 관점에서는 각 디스크 간의 부하균형(load balancing)을 이루도록 스케줄링하는 것이 중요하다. 다중 디스크 환경에서의 스케줄링은 많은 요청을 동시에 처리할 수 있는 확장성 있는 서비스가 목표이므로 일부 디스크가 과부하 상태에 이르지 않고 모든 디스크에 요청이 골고루 분배되도록 스케줄링해야 하기 때문이다.
최근에는 전력 소모를 줄이는 것이 디스크 관리의 또 다른 중요한 목표로 인식되고 있다. 전력 절감 측면에서는 모든 디스크에 요청을 골고루 분산시키기보다는 일부 디스크에 요청을 집중시키고 나머지 디스크는 회전을 정지하는 것이 더 효과적이다.
4. 디스크의 저전력 관리
디스크의 상태는 전력 소모를 기준으로 크게 네 가지로 나눌 수 있다.
- 활성 상태
- 활동(active) 상태: 현재 헤드가 데이터를 읽거나 쓰고 있는 상태
- 공회전(idle) 상태: 디스크가 회전 중이지만 데이터를 읽거나 쓰지는 않는 상태
- 비활성 상태
- 준비(standby) 상태: 디스크가 회전하지 않지만 인터페이스가 활성화된 상태
- 휴면(sleep) 상태: 디스크가 회전하지 않고 인터페이스도 비활성화된 상태
각 상태로 전환할 때는 부가적인 전력 및 시간이 소모되므로 후속 요청까지의 시간 간격이 일정 시간(break-even time) 이상일 경우에만 디스크의 회전을 정지시키는 것이 전력 소모를 절감하는 데 효과적이다.
디스크를 비활성화하는 시점을 결정하는 방법으로는 시간기반 기법과 예측기반 기법, 확률기반 기법이 있다.
- 시간기반: 일정 시간 동안 디스크가 공회전 상태이면 장치를 정지시켰다가 다시 요청이 왔을 때 디스크를 활성화
- 예측기반: 과거 요청을 관찰하여 다음 공회전 구간의 길이를 예측 후 디스크를 비활성화할 시점 결정
- 확률기반: 디바이스의 상태변경 시간 간격을 구하기 위해 확률분포를 통해 요청을 모델링하고 마르코프 체인 등과 같은 통계적 모델을 이용
이 밖에도 디스크의 전력 소모를 줄이기 위한 방법으로 회전속도 조절 기법, 디스크의 데이터 배치 기법, 버퍼캐싱 및 사전인출 기법, 쓰기전략을 통한 저전력 디스크 기법 등 다양한 방식이 제안, 연구되고 있다.
'books > OS' 카테고리의 다른 글
[OS] 메모리 관리 (작성중) (1) | 2024.06.16 |
---|---|
[OS] 웹캐싱 기법 (0) | 2024.06.13 |
[OS] 가상메모리 (2) | 2024.06.11 |
[OS] CPU 스케줄링 (1) | 2024.03.26 |
[OS] 프로세스 관리 (1) | 2024.03.24 |