Post

9장 디스크 관리

디스크의 구조



disk 구조


디스크 외부에서는 일정한 크기의 저장공간들로 이루어진 1차원 배열처럼 취급하게 된다.

일정한 크기의 저장공간을 논리블록이라고 하며, 이 논리블록 단위로 저장되고 전송된다.

논리블록은 디스크 내에서 섹터에 저장되어 있다.

즉, 하나의 논리블록은 하나의 섹터에 저장되어 있다.


하나의 원판 안에 하나의 트랙이 있고, 이 트랙은 섹터들로 구성되어있다.

디스크에는 여러 원판들이 존재할 수 있으며, 여러 개의 원판에서 상대적 위치가 동일한 트랙들의 집합을 실린더라고 한다.

디스크에 데이터를 읽고 쓰려면 암(arm)이 해당 섹터가 있는 실린더로 이동 후 원판이 회전하여 디스크 헤드가 저장된 섹터 위치에 도달해야 한다.






디스크 스케줄링



  • 디스크 접근시간 = 탐색시간 + 회전지연시간 + 전송시간
    • 탐색시간 = 헤드가 섹터가 있는 실린더로 이동하기까지의 시간
    • 회전지연시간 = 섹터가 헤드 위치에 도달하기까지 회전하는 시간
    • 전송시간 = 데이터를 전송하는데 걸린 시간


운영체제 입장에서 회전지연시간과 전송시간은 제어하기 힘든 부분으로, 접근시간을 줄이기 위해서는 탐색시간을 줄여야한다.

즉, 헤더가 효율적으로 이동하여 탐색 시간을 줄여야 한다.

디스크 스케줄링이란 효율적인 디스크 입출력을 위해 여러 섹터들에 대한 입출력 요청을 어떤 순서로 처리할지 결정하는 메커니즘이다.


  • FCFS 스케줄링
    • 들어온 순서대로 처리하는 방식
    • 비효율적인 상황을 초래할 수 있다.
    • 왜냐하면 헤더가 고정된 것이 아닌, 움직이면서 처리하기 때문에 극단적인 경우엔 끝과 끝에 있는 곳에 입출력 연산을 하는 상황이 발생할 수 있다.


  • SSTF(Shortest Seek Time First) 스케줄링
    • 현재 위치로부터 가장 가까운 위치에 있는 요청을 제일 먼저 처리하는 알고리즘
    • 예를 들어, 현재 54번 위치에 있고 순서대로 99, 184, 36, 66, 68 실린더 위치에서 요청이 들어오면 66번을 처리하고 그 다음 가까운 68번을 처리하게 된다.
    • 단점은, 계속해서 현재 위치에서 가까운 곳에서 요청이 들어오면 먼 곳에서 온 요청이 처리되지 않는, 기아 현상이 발생할 수 있다.
    • FCFS보다는 이동거리를 많이 줄일 수 있는데, 가장 우수한 알고리즘은 아니다.


  • SCAN 알고리즘
    • 헤드가 디스크 안쪽 끝과 바깥쪽 끝을 오가면서 정해진 방향으로 이동하면서 길목에 있는 요청들을 처리하는 방식
    • 엘레베이터 알고리즘이라고도 한다.
    • 이 알고리즘은 효율성과 형평성을 모두 만족하지만 공평성을 만족시키진 못했다.
      • 양 끝의 실린더(예를 들어, 1층과 꼭대기층)는 가운데 실린더보다 기다리는 시간이 2배다.
    • 이를 보완한 알고리즘이 C-SCAN 알고리즘이다.


  • C-SCAN(Circular-SCAN) 알고리즘
    • SCAN처럼 정해진 방향으로 처리한 후 헤드가 다른 쪽 끝에 도달한 경우 다시 출발점으로 돌아가는 동안 요청을 처리하지 않고 이동한 후 처리하는 방식
    • 즉, 1층에서 16층까지 처리한 후 16층에서 다시 1층으로 가는 동안 멈추지 않고 1층으로 와서 다시 16층까지 처리하는 방식이다.
    • 이 알고리즘은 SCAN보다는 헤드의 이동거리가 조금 늘어나지만 좀 더 균일한 탐색시간을 제공한다.


  • LOOK, C-LOOK 알고리즘
    • LOOK 알고리즘은 SCAN에서 더 나아가 진행중인 방향에 더 이상 요청이 없다면 다른 쪽 끝으로 이동하면서 처리한다.
    • 헤드가 진행중인 방향에 요청이 있는지 살핀다고 해서 LOOK이라 한다.
    • C-LOOK 알고리즘은 같은 맥락으로 한쪽 방향으로 이동할 때에만 요청을 처리한다.


FCFS, SSTF보다 SCAN, C-SCAN과 이를 더 개선한 LOOK, C-LOOK 스케줄링 알고리즘이 더 효율적이다.






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



다중 디스크는 동일한 정보를 여러 디스크에 중복 저장함으로써 인기 있는 데이터를 여러 디스크로부터 동시에 서비스할 수 있고, 일부 디스크에 오류가 발생해도 지속적인 서비스가 가능하며, 정보의 유실을 방지할 수 있다.

따라서 다중 디스크 환경에서의 스케줄링에는 추가적으로 어떤 디스크를 선택하여 요청을 처리할지 결정해야 한다.

또한 다중 디스크 환경 스케줄링의 목표는 많은 요청을 동시에 처리할 수 있는 확장성 있는 서비스이므로 일부 디스크가 과부하 상태에 이르지 않고 모든 디스크에 요청이 골고루 분배되도록 스케줄링해야 한다.

즉, 각 디스크 간의 부하균형을 이루도록 스케줄링하는 것이 중요하다.






디스크의 저전력 관리



  • 비활성화 기법
    • 디스크의 상태는 전력소모를 기준으로 활동 상태, 공회전 상태, 준비 상태, 휴면 상태로 구분한다.
      • 활동 상태는 데이터를 읽거나 쓰고 있는 상태
      • 공회전 상태는 데이터를 읽거나 쓰고 있진 않지만, 회전하고 있는 상태
      • 준비 상태는 회전하진 않지만, 인터페이스가 활성화되어 있는 상태
      • 휴면 상태는 아예 비활성화되어 있는 상태
    • 디스크가 활성화 된 건 활동 상태와 공회전 상태
    • 디스크가 비활성화 된 건 준비 상태와 휴면 상태
    • 다른 상태로 전환 시 추가적인 전력과 시간이 소모되므로 언제 비활성화 할 지 시점을 결정하는 것이 중요하다.
    • 시간기반(timeout based) 기법에서는 일정 시간 동안 디스크가 공회전 상태이면 장치를 정지했다가 다시 요청이 올 때 활성화한다.
    • 예측기반(prediction based) 기법에서는 과거 요청을 관찰하여 예측한 후 디스크를 비활성화 할 시점을 결정한다.
    • 확률기반(stochastic based) 기법에서는 디바이스 상태변경 시간 간격을 구하기 위해 확률분포를 통해 요청을 모델링하고 통계적 모델을 이용한다.


  • 회전속도 조절기법
    • 운영체제에서 전력 소모를 최소화하기 위해 디스크의 회전 속도를 관리하는 지능형 전력 관리 기법에 대해 연구되고 있다.


  • 디스크의 데이터 배치 기법
    • 디스크의 53% 이상이 빈 공간인 상태로 남아 있다는 점에서 디스크 내에서 데이터의 복제본을 많이 만들어 헤드 위치에서 가까운 복제본에 접근하도록 함으로써 빠른 응답시간과 전력 소모량 절감을 얻는 FS2 파일 시스템(free space file system)이 제안됬다.


  • 버퍼캐싱 및 사전인출 기법
    • 미래에 요청될 데이터를 미리 알거나 예측하여 디스크가 활성 상태일 때 헤드 위치로부터 가까운 데이터를 사전 인출 함으로써 비활성화 가능성을 높인다.
    • 데드라인을 꼭 지켜야 하는 긴급한 요청이 아닌 경우, 최대한 요청을 지연시키는 방식으로 전력 소모를 줄일 수 있다.
    • 이 둘을 합쳐 디스크가 저전력 모드에서는 입출력 처리를 최대한 지연시켰다가 정상 전력모드로 돌아왔을 때, 사전인출을 공격적으로 함으로써 디스크의 상태 변화 횟수를 최소화하는 방식이다.


  • 쓰기전략을 통한 저전력 디스크 기법
    • 대상 디스크가 비활성 상태일 때는 쓰지 않고 기다렸다가 활성 상태로 바뀌면 쓰는 방식으로 전력 소모를 줄이는 방법이다.






This post is licensed under CC BY 4.0 by the author.