[운영체제와 정보기술의 원리] 9. 디스크 관리

'운영체제와 정보기술의 원리' 스터디를 진행하며 정리한 내용이다.


1. 디스크의 구조

Untitled (89)

  • 디스크 외부에서는 디스크를 일정한 크기의 저장공간들로 이루어진 1차원 배열처럼 취급하게 되는데 이 일정한 크기의 저장공간을 논리블록(logical block)이라고 한다.

    • 디스크에 데이터가 저장될 때에는 논리블록 단위로 저장
    • 디스크 외부로 입출력이 일어날 때에도 논리블록 단위로 전송
    • 논리블록에 저장된 데이터를 접근하기 위해서는 배열을 접근하는 것처럼 해당 블록의 인덱스 번호를 전달해야 함.
    • 논리블록이 저장되는 디스크 내의 물리적 위치를 섹터(sector)라고 부르고 논리블록 하나가 섹터 하나와 1 대 1로 매핑되어 저장되는 것.
  • 디스크는 마그네틱의 원판으로 구성되어 있는데 각각의 원판은 트랙(track)으로 구성되고 각 트렉은 섹터로 나뉨.
  • 여러 개의 원판에서 상대적 위치가 동일한 트랙의 집합을 실린더(cylinder)라 부름.
  • 디스크에 데이터를 읽고 쓰기 위해서는 암(arm)이 해당 섹터가 위치한 실린더로 이동.

2. 디스크 스케줄링

  • 디스크에 대한 접근시간(access time)은 몇 가지로 구분된다.

    • 탐색시간(seek time) - 디스크 헤드를 해당 실린더 위치로 이동시키는 데 걸리는 시간.
    • 회전지연시간(rotational latency) - 디스크가 회전해서 읽고 쓰려는 섹터가 헤드 위치에 도달하기까지 걸리는 시간
    • 전송시간(transfer time) - 해당 섹터가 헤드 위치에 도달한 후 데이터를 실제로 섹터에 읽고 쓰는데 소요되는 시간.
  • 디스크 입출력의 효율을 높이기 위해서는 디스크 입출력에 소요되는 접근시간을 최소화해야 함.

    • 회전지연시간과 전송시간은 상대적인 수치가 작을 뿐 아니라 운영체제 입장에서 통제하기 힘든 부분.
    • 따라서 탐색시간을 줄이기 위해 헤드의 움직임을 최소화하는 스케줄링 작업을 함.
  • 디스크 스케줄링(disk scheduling)이란 효율적인 디스크 입출력을 위해 여러 섹터들에 대한 입출력 요청이 들어왔을 때 이들을 어떠한 순서로 처리할 것인지 결정하는 메커니즘을 뜻함.

    • 가장 중요한 목표는 디스크 헤드의 이동거리를 줄이는 것.
  • FCFS 스케줄링

    • FCFS(First Come First Served) 스케줄링은 디스크에 먼저 들어온 요청을 먼저 처리하는 방식.
    • FCFS 스케줄링이 적용되는 디스크에서 최악의 경우 입출력 요청이 디스크의 한쪽 끝과 반대쪽 끝에 번갈아 도착한다면 헤드는 디스크를 계속 왕복하며 일을 처리해야 하므로 탐색시간이 매우 비효율적으로 늘어나는 결과를 초래함.
  • SSTF 스케줄링

    • SSTF(Shortest Seek Time First) 스케줄링은 헤드의 현재 위치로부터 가장 가까운 위치에 있는 요청을 제일 먼저 처리하는 알고리즘.
    • 헤드의 이동거리를 줄여 디스크 입출력의 효율성을 증가시키지만, 자칫 기아 현상(starvation)을 발생시킬 수 있음.

      • 현재 헤드의 위치로부터 가까운 곳에서 지속적인 요청이 들어올 경우 멀리 떨어진 곳의 요청은 무한히 기다려야 하는 문제가 발생.
  • SCAN 알고리즘

    • SCAN 알고리즘은 헤드가 디스크 원판의 안쪽 끝과 바깥쪽 끝을 오가며, 그 경로에 존재하는 모든 요청을 처리함.

      • 즉 디스크의 어떠한 위치에 요청이 들어오는가와 상관없이 헤드는 정해진 방향으로 이동하며 길목에 있는 요청들을 처리하며 지나가는 것.
    • 엘리베이터에서 사용하는 스케줄링 알고리즘과 유사하여 SCAN 알고리즘을 엘레베이터 스케줄링 알고리즘이라고도 부름.
    • SCAN 알고리즘에서는 FCFS처럼 불필요한 헤드의 이동이 발생하거나 SSTF처럼 일부 지역이 지나치게 오래 기다리는 현상이 발생하지 않는 효율성과 형평성을 모두 만족하는 알고리즘.
    • 다만 모든 실린더 위치의 기다리는 시간이 공평한 것은 아님.

      • 제일 안쪽이나 제일 바깥쪽 위치보다는 가운데 위치가 기다리는 평균시간이 더 짧음.
  • C-SCAN 알고리즘

    • C-SCAN(Circular-SCAN) 알고리즘은 SCAN처럼 헤드가 한쪽 끝에서 다른 쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리함.
    • SCAN과는 달리 헤드가 다른 쪽 끝에 도달해 방향을 바꾼 후에는 요청을 처리하지 않고 곧바로 출발점으로 다시 이동만 함.
    • 이 방식은 각 실린더 위치에 대해 SCAN보다 좀 더 균일한 탐색시간을 제공함.
  • LOOK과 C-LOOK 알고리즘

    • LOOK 알고리즘은 헤드가 한쪽 방향으로 이동하다가 그 방향에 더 이상 대기 중인 요청이 없으면 헤드의 이동 방향을 즉시 반대로 바꾸는 스케줄링 방식.
    • C-LOOK 알고리즘은 전방에 요청이 없을 때 방향을 바꾼다는 측면에서는 LOOK과 유사하며, 한쪽 방향으로 이동할 때에만 요청을 처리한다는 점에서 C-SCAN과 유사함.

3. 다중 디스크 환경에서의 스케줄링

  • 다중 디스크를 사용하면 시스템의 성능과 신뢰성을 동시에 향상시킬 수 있음.
  • 같은 데이터가 저장되어 있는 여러 개의 디스크 중 어느 디스크에서 요청을 처리할지 결정하는 스케줄링 문제가 발생함.
  • 다중 디스크에서의 스케줄링은 작업을 수행할 디스크를 결정하는 문제까지 포함함.
  • 이러한 시스템에서는 스케줄링의 목표에 따라 요청을 처리할 디스크를 결정하는 기준이 달라짐.

    • 탐색시간을 줄이는 것이 목표라면 여러 디스크 중에서 헤드의 현재 위치가 요청한 데이터와 가장 가까운 디스크를 선택하는 방법을 사용
    • 좀 더 거시적인 관점에서는 각 디스크 간의 부하균형(load balancing)을 이루도록 스케줄링하는 것이 중요
  • 최근에는 전력 소모를 줄이는 것이 또 다른 중요한 목표로 인식되고 있음

    • 일부 디스크에 요청을 집중시키고 나머지 디스크는 회전을 정지시키는 것이 효과적.

4. 디스크의 저전력 관리

  1. 비활성화 기법

    • 디스크의 상태는 전력 소모를 기준으로 크게 네 가지로 나눌 수 있음

      • 활동(active) 상태 - 현재 헤드가 데이터를 읽거나 쓰고 있는 상태
      • 공회전(idle) 상태 - 디스크가 회전 중이지만 데이터를 읽거나 쓰지는 않는 상태
      • 준비(standby) 상태 - 디스크가 회전하지 않지만 인터페이스가 활성화된 상태
      • 휴면(sleep) 상태 - 디스크가 회전하지 않고 인터페이스도 비활성화된 상태
    • 디스크가 회전 중인 상태를 활성 상태라고 부르고, 디스크가 정지한 상태를 비활성 상태라고 부르면 활성 상태보다 비활성 상태에서 전력 소모가 적으며 요청이 없을 경우 디스크를 정지시키는 것이 전력 절감 측면에서 효과적.
    • 다만 각 상태로 전환할 때는 부가적인 전력 및 시간이 소모됨.

      • 따라서 후속 요청까지의 시간 간격이 일정 시간(break-even time) 이상일 경우에만 디스크의 회전을 정지시키는 것이 전력 소모를 절감하는 데 효과적.
      • 비활성화할 지점을 결정하기 위해 미래의 요청이 도착하는 시점과 간격을 정확히 예측하는 것이 중요함.
    • 디스크를 비활성화하는 시점을 결정하는 방법으로는 세 가지가 있음

      • 시간기반(timeout based) 기법 - 일정 시간 동안 디스크가 공회전 상태이면 장치를 정지시켰다가, 다시 요청이 왔을 때 디스크를 활성화함.
      • 예측기반(prediction based) 기법 - 과거 요청을 관찰하여 다음 공회전 구간의 길이를 예측한 후 디스크를 비활성화할 시점을 결정함.
      • 확률기반(stochastic based) 기법 - 디바이스의 상태변경 시간 간격을 구하기 위해 확률분포를 통해 요청을 모델링하고 마르코프 체인 등과 같은 통계적 모델을 이용함.
  2. 회전속도 조절 기법

    • 디스크의 전력 소모를 줄이기 위한 방법으로 최근에는 디스크의 회전속도(Rotations Per Minute: RPM)를 가변적으로 조절하는 기법이 제안되었음.
    • 디바이스 스준에서 이와 같은 기능이 지원됨에 따라 운영체제에서는 전력 소모를 최소화하기 위해 디스크의 회전속도를 관리하는 지능형 전력 관리 기법에 대한 연구가 이루어지고 있음.
  3. 디스크의 데이터 배치 기법

    • 디스크의 용량은 매년 빠른 속도로 증가하고 있으나 디스크의 접근 속도는 기계적 메커니즘으로 인해 그다지 큰 발전이 없는 실정임.
    • 대부분의 컴퓨터 시스템에서 디스크의 53% 이상이 빈 공간 상태로 남아 있다는 점에 착안해, 디스크 내에 데이터의 복제본을 많이 만들어 헤드 위치에서 가까운 복제본을 접근하도록 함으로써 빠른 응답시간과 전력 소모량 절감을 얻는 FS2 파일 시스템을 제안한 팀도 있음.
  4. 버퍼캐싱 및 사전인출 기법

    • 미래에 요청될 데이터를 미리 알거나 어느 정도 예측할 수 있다면 디스크가 활성 상태일 때 헤드 위치로부터 가까운 데이터를 사전인출(prefetching) 함으로써 향후 디스크의 비활성화 가능성을 높여 전력 소모를 줄일 수 있음.
    • 데드라인을 꼭 지켜야 하는 요청이 아닌 경우, 디스크의 활성 상태 여부에 따라 요청을 최대한 지연시키는 방식으로 전력 소모를 줄일 수 있음.
  5. 쓰기전략을 통한 저전력 디스크 기법

    • 저장장치의 데이터에 대한 쓰기전략을 통해 전력 소모를 줄이는 기법도 제안되고 있음.
    • 디스크가 활성 상태로 돌아왔을 때 쓰는 방식 또는 대상 디스크가 활성 상태가 아니면 일단 블록들을 로그 디스크에 썼다가 디스크가 활성 상태로 돌아왔을 때 디스크에 쓰기연산을 수행하는 방식 등이 있음.