본문 바로가기
OS

디스크 관리

by creatingeveryday 2023. 4. 7.

디스크 관리

디스크의 구조

  • 논리 블록(logical block)
    • 디스크 외부에서는 디스크를 일정한 크기의 저장공간들로 이루어진 1차원 배열처럼 취급한다.
    • 일정한 크기의 저장공간을 논리블록이라고 하며, 디스크에 데이터가 저장될 때에는 논리블록 단위로 저장되고, 디스크 외부로 입출력이 일어날 때에도 논리블록 단위로 전송된다.
    • 논리 블록에 저장된 데이터에 접근 시 배열에 접근하는 것처럼 해당 블록의 인덱스 번호를 디스크에 전달해야 한다. 그러면 디스크 컨트롤러는 해당 논리블록이 저장된 물리적 위치를 찾아 요청된 데이터에 대한 입출력 작업을 수행하게 된다.
  • 섹터(sector)
    • 각 논리블록이 저장되는 디스크 내의 물리적인 위치
    • 논리블록과 섹터 하나와 1대1로 매핑되어 저장된다.
  • 마그네틱 원판
    • 각각의 원판은 트랙으로 구성되고 각 트랙은 섹터로 나뉘며, 섹터에 최소한의 단위 정보가 저장된다.
  • 실린더
    • 여러개의 원판에서 상대적 위치가 동일한 트랙들의 집합
    • 섹터 0은 최외곽 실린더의 첫 번째 트랙에 있는 첫 번째 섹터이다.
    • 디스크에 데이터를 읽고 쓰기 위해서는 암(arm)이 해당 섹터가 위치한 실린더로 이동한 후 원판이 회전하여 디스크헤드가 저장된 섹터 위치에 도달해야 한다.

디스크 스케줄링

  • 디스크에 대한 접근시간 = 탐색시간 + 회전지연시간 + 전송시간
    • 탐색시간은 디스크 헤드를 해당 실린더 위치로 이동시키는 데 걸리는 시간
    • 회전지연시간은 디스크가 회전해서 읽고 쓰려는 섹터가 헤드 위치에 도달하기까지 걸리는 시간
    • 전송시간은 해당 섹터가 헤드 위치에 도달한 후 데이터를 실제로 섹터에 읽고 쓰는데 소요되는 시간
  • 어떻게 디스크의 입출력 효율을 높이기 위하여 접근 시간을 최소화할 것인가?
    • 운영체제 입장에서 회전지연시간과 전송시간은 통제하기 힘든 부분
    • 운영체제는 탐색시간을 줄이기 위해서 헤드의 움직임을 최소화하는 스케줄링 작업을 한다.
    • 디스크 스케줄링이란 효율적인 디스크 입출력을 위해 여러 섹터들에 대한 입출력 요청이 들어왔을 때 이들을 어떠한 순서로 처리할 것인지 결정하는 메커니즘을 말한다.
    • 디스크 스케줄링의 가장 중요한 목표는 디스크 헤드의 이동거리를 줄이는 것이다.
    • 디스크 스케줄링 기법은 엘리베이터의 스케줄링 문제와 유사하다.
  • 종류
    • FCFS 스케줄링
      • 디스크에 먼저 들어온 요청을 먼저 처리한다.
      • 입출력 요청이 디스크의 한쪽 끝과 반대쪽 끝에 번갈아 도착한다면 헤드는 디스크를 계속 왕복하며 일을 처리해야 하므로 탐색 시간이 매우 비효율적으로 늘어날 수 있다.
    • SSTF 스케줄링
      • 헤드의 현재 위치로부터 가장 가까운 위치에 있는 요청을 제일 먼저 처리한다.
      • 헤드의 이동거리를 줄일 수 있지만 자칫 기아 현상을 발생시킬 수 있다.
      • 현재의 헤드 위치로부터 가까운 곳에서 지속적인 요청이 들어올 경우 헤드 위치에서 멀리 떨어진 곳의 요청은 무한히 기다려야 할 수 있다.
    • SCAN 알고리즘
      • 헤드가 디스크 원판의 안쪽 끝과 바깥쪽 끝을 오가며 그 경로에 존재하는 모든 요청을 처리한다.
      • 디스크의 어떠한 위치에 요청이 들어오는가와 상관없이 헤드는 정해진 방향으로 이동하면서 길목에 있는 요청들을 처리하며 지나가는 것이다.
      • 버스가 일정 경로에 따라 움직이며 정류장에서 기다리고 있는 사람들을 태우는 것과 유사한 방식이다.
      • 엘리베이터 스케줄링 알고리즘이라고도 부른다. 한 방향으로 이동하면서 진행 경로에 같은 방향으로 가는 승객이 있으면 모두 태운다.
      • 효율성과 형평성을 모두 만족하는 알고리즘이지만 탐색시간의 편차가 존재하기에 C-SCAN 알고리즘이 제안되었다.
    • C-SCAN 알고리즘(circular)
      • 헤드가 한쪽 끝에서 다른 쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리하지만 SCAN과 달리 헤드가 다른 쪽 끝에 도달해 방향을 바꾼 후에는 요청을 처리하지 않고 곧바로 출발점으로 다시 이동만 한다.
      • SCAN 보다 좀 더 균일한 탐색시간을 제공한다.
    • LOOK과 C-LOOK 알고리즘
      • SCAN 알고리즘과 달리 헤드가 한쪽 방향으로 이동하다가 그 방향에 더 이상 대기 중인 요청이 없으면 헤드의 이동방향을 즉시 반대로 바꾸는 스케줄링 방식이다.
      • C-LOOK 알고리즘 C-SCAN 알고리즘처럼 한쪽 방향으로 요청을 처리한다.

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

  • 다중 디스크 사용 시 같은 데이터가 저장되어 있는 여러 개의 디스크 중 어느 디스크에서 요청을 처리할지 결정하는 스케줄링 문제가 발생한다.
  • 스케줄링 목표
    • 각 디스크 간의 부하 균형을 이루도록 스케줄링하여 요청이 각 디스크로 골고루 분배되도록 한다.
    • 탐색 시간을 줄이기 위해 헤드의 현재 위치가 요청한 데이터와 가장 가까운 디스크를 선택한다.
    • 전력소모를 줄이기 위해 일부 디스크에 요청을 집중시킬 수도 있다.

디스크의 저전력관리

  • 디스크의 상태
    • 활성 상태
      • 활동 상태
        • 현재 헤드가 데이터를 읽거나 쓰고 있는 상태
      • 공회전 상태
        • 디스크가 회전 중이지만 데이터를 읽거나 쓰지는 않는 상태
    • 비활성 상태
      • 준비 상태
        • 디스크가 회전하지는 않지만 인터페이스가 활성화된 상태
      • 휴먼 상태
        • 디스크가 회전하지도 않고 인터페이스도 비활성화된 상태
  • 비활성화 기법
    • 요청이 없을 경우 디스크를 비활성 상태로 정지시킨다.
    • 하지만 비활성 상태에서 데이터를 읽고 쓰려면 활성 상태일 때보다 몇 초의 부가적인 시간과 2배 정도의 부가적인 전력 소모가 뒤따른다.
    • 후속 요청까지의 시간 간격이 일정 시간 이상일 경우에만 디스크의 회전을 정지시키는 게 효과적이다.
    • 디스크를 비활성화하는 시점을 결정하는 방법으로 시간 기반 기법과 예측 기반 기법, 확률 기반 기법이 있다.
  • 회전속도 조절 기법
    • 전력소모를 줄이기 위해 디스크의 회전 속도를 가변적으로 조절하는 기법
    • 운영체제는 시스템 자원과 부하를 포괄적으로 볼 수 있기 때문에 하드웨어 혼자서 전력관리를 하는 것에 비해 더 많은 전력 절감 효과를 얻을 수 있다.
  • 디스크의 데이터 배치 기법
    • 디스크의 53% 이상이 빈 공간인 상태로 남아 있다는 점에 착안해 디스크 내에 데이터의 복제본을 많이 만들어서 헤드 위치에서 가까운 복제본에 접근하도록 함으로써 빠른 응답시간과 전력소모량 절감을 얻는 실험적인 FS2 파일 시스템을 개발되기도 하였다.
  • 버퍼 캐싱 및 사전인출 기법
    • 미래에 요청될 데이터를 미리 알거나 어느 정도 예측할 수 있다면 디스크가 활성 상태일 때 헤드위치로부터 가까운 데이터를 사전인출함으로써 향후 디스크의 비활성화 가능성을 높여 전력소모를 줄일 수도 있다.
  • 쓰기 전략을 통한 저전력 디스크 기법
    • 대상 디스크가 비활성 상태일 때에는 디스크 쓰기를 하지 않고 기다렸다가 디스크가 활성상태로 돌아왔을 때 쓰는 방식으로 전력 소모를 줄이는 방안이 연구되었다.

'OS' 카테고리의 다른 글

웹 캐싱 기법  (0) 2023.04.12
가상 메모리  (0) 2023.04.01
메모리 관리  (1) 2023.03.26
CPU 스케줄링  (0) 2023.03.18
프로세스 관리  (0) 2023.03.11

댓글