[CS 기초] 운영체제와 정보기술

Sohyeon Bak·2022년 9월 29일
0

개발 책

목록 보기
18/18
post-thumbnail

09. 디스크 관리

디스크
컴퓨터 시스템의 대표적인 2차 저장장치.
메모리는 휘발성 저장장치로 전원이 나가면 그 내용이 모두 사라진다.
영구히 보관하기 위해서는 디스크와 같은 2차 저장장치를 이용해야한다.

디스크 구조

논리블록

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

  • 디스크에 데이터가 저장될 때에는 논리블록 단위로 저장
  • 디스크 외부로 입출력이 일어날 때에도 논리블록 단위로 전송
  • 논리블록에 저장된 데이터에 접근하기 위해서는 해당 블록의 인덱스 번호를 디스크에 전달
  • 논리블록이 저장된 디스크 내의 물리적 위치를 섹터
  • 논리블록 하나가 섹터 하나와 1대 1로 매칭

디스크의 물리적구조

: 마그네틱 원판으로 구성

  • 원판은 트랙으로 구성
  • 트랙은 섹터로 나뉨
    : 섹터에 최소한의 단위 정보가 저장
  • 여러개의 원판에서 상대적 위치가 동일한 트랙들의 집합을 실린더
    : 디스크에 데이터를 읽고 쓰기 위해 암이 해당 섹터가 위치한 실린더로 이동 후 원판이 회전하여 디스크 헤드가 저장된 섹터 위치에 도달

디스크 스케줄링

디스크 접근시간

  • 탐색시간
    : 디스크 헤드를 해당 실린더 위치로 이동시키는데 걸리는 시간
    • 접근하려는 데이터가 원판의 안쪽에 있는지 바깥쪽에 있는지에 따라 헤드를 움직이는데 걸리는 시간이다.
  • 회전지연시간
    : 디스크가 회전해서 읽고 쓰려는 섹터가 헤드 위치에 도달하기까지 걸리는 시간
  • 전송시간
    : 해당 섹터가 헤드 위치에 도달한 후 데이터를 실제로 섹터에 읽고 쓰는데 소요되는 시간

디스크 입출력의 효율을 높이기 위한 방법

  • 디스크 입출력에 소요되는 접근시간 최소화
  • 회전지연시간과 전송시간은 상대적인 수치가 작고 운영체제 입장에서 통제하기 힘들다.
    → 탐색시간을 줄여야 하는데 이를 위해 헤드의 움직임을 최소화하는 스케줄링 작업을 한다.

디스크 스케줄링

: 효율적인 디스크 입출력을 위해 여러 섹터들에 대한 입출력 요청이 들어왔을 때 이들을 어떠한 순서로 처리할 것인지 결정하는 매커니즘
→ 디스크 헤드의 이동거리를 줄이는 것!

FCFS 스케줄링

: 디스크에 먼저 들어온 요청을 먼저 처리하는 방식

  • 합리적인 것처럼 보이지만 효율성은 매우 낮음 (디스크 헤드가 움직이면서 서비스를 하기 때문)
  • FCFS 스케줄링이 적용되는 디스크에서 최악의 경우 입출력 요청이 디스크의 한쪽 끝과 반대쪽 끝에 번갈아 도착하면 헤드는 디스크를 계속 왕복해 일을 처리해야해서 탐색시간이 매우 비효율적

SSTF 스케줄링

: 헤드의 현재 위치로부터 가장 가까운 위치에 있는 요청을 제일 먼저 처리하는 알고리즘

  • SSTF는 헤드의 이동거리를 줄여 디스크 입출력의 효율성을 증가 시키지만 자칫 기아현상 발생
  • 헤드위치로부터 가까운 곳에서 지속적인 요청이 들어올 경우 헤드 위치에서 멀리 떨어진 곳의요청은 무한히 기다려야 하는 문제 발생

SCAN 알고리즘(=엘레베이터 스케줄링 알고리즘)

: 헤드가 디스크 원판의 안쪽 끝과 바깥쪽 끝을 오가며 그 경로에 존재하는 모든 요청을 처리

  • 헤드는 정해진 방향으로 이동하면서 길목에 있는 요청을 처리하며 지나감
  • SCAN 알고리즘에서는 FCFS 처럼 불필요한 헤드의 이동이 발생하거나 SSTF처럼 일부 지역에 오래 기다리는 현상이 발생하지 않는다.
    → 효율성과 형평성을 모두 만족
  • 한번만 이동하면 현재 큐에 들어온 모든 요청을 처리할 수 있으므로 이동거리 측면에서 매우 효율적
  • 헤드가 전체 실린더를 한 번 스캔하는 시간이면 기다리던 모든 요청이 처리되므로 일부 요청이 지나치게 오래 기다리는 현상도 발생하지 않는다

C-SCAN 알고리즘

: 다른 쪽 끝에 도달해 방향을 바꾼 후에는 요청을 처리하지 않고 곧바로 출발점으로 다시 이동만 한다.

  • SCAN 보다 헤드의 이동거리는 조금 길어지지만 탐색시간의 편차를 줄일 수 있다는 것이 장점

LOOK과 C-LOOK 알고리즘

LOOK

: 헤드가 한쪽 방향으로 이동하다가 그 방향에 더이상 대기 중인 요청이 없으면 헤드의 이동 방향을 즉시 반대로 바꾸는 스케줄링 방식

C-LOOK

: 전방에 요청이 없을 때 방향을 바꾼다는 측면에서 LOOK과 유사하며 한쪽 방향으로 이동할 때에만 요청을 처리한다는 것에서 C-SCAN과 유사하다.

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

: 다중 디스크를 사용하면 시스템의 성능과 신뢰성을 동시에 향상시킬 수 있다.

  • 같은 데이터가 저장되어 있는 여러개의 디스크 중 어느 디스크에서 요청을 처리할지 결정하는 스케줄링 문제가 발생
  • 탐색시간을 줄이는 것이 목표라면 여러 디스크 중에서 헤드의 현재 위치가 요청한 데이터와 가장 가까운 디시크를 선택하는 방법을 사용
    →디스크 간의 부하균형을 이루는 것이 중요

최근 전력 소모를 줄이는 것이 디스크 관리의 또 다른 중요한 목표로 인식
일부 디스크 요청을 집중시키고 나머지 디스크는 회전을 정지시키는 것이 더 효과적이다.

디스크의 저전력 관리

비활성화 기법

디스크의 상태는 전력 소모를 기준으로 크게 네가지 상태

  • 활동 상태
    : 현재 헤드가 데이터를 읽거나 쓰고 있는 상태
  • 공회전 상태
    : 디스크가 회전 중이지만 데이터를 읽거나 쓰지 않는 상태
  • 준비 상태
    : 디스크가 회전하지 않지만 인터페이스가 활성화된 상태
  • 휴면 상태
    : 디스크가 회전하지 않고 인터페이스도 비활성화된 상태

비활성 상태에서 데이터를 읽고 쓰려면 활성 상태보다 시간과 전력 소모가 더 따른다.
후속 요청까지의 시간간격이 일정 시간이상일 경우 디스크의 회전을 정지시키는 것이 전력 소모를 절감하는데 효과적

디스크의 비활성화 시점을 결정하는 방법

  • 시간기반
    : 일정 시간 동안 디스크가 공회전 상태이면 장치를 정지시켰다가 다시 요청왔을때 디스크를 활성화
  • 예측기반
    : 과거 요청을 관찰하여 다음 공회전 구간의 길이를 예측한 후 디스크를 비활성화 할 시점 결정
  • 확률기반
    : 디바이스의 상태 변경 시간 간격을 구하기 위해 활률 분포를 통해 요청을 모델링

회전속도 조절 기법

: 디스크의 전력 소모를 줄이기 위한 방법으로 최근에는 디스크이 회전속도를 가변적으로 조절하는 기법 제안

  • 멀티미디어 환경에서는 시간에 따른 순차적인 데이터 접근이 이뤄지므로 주기성과 규칙성이 있어 미래의 참조에 대한 예측이 비교적 정확하게 이뤄짐

디스크의 데이터 배치 기법

: 디스크이 용량은 매년 빠른 속도로 증가하나 디스크의 접근 속도는 기계적 메커니즘으로 큰 발전이 없다.

  • 디스크 내의 데이터 복제본을 많이 만들어 헤드 위치에서 가까운 복제본에 접근하도록해 빠른 응답시간과 전력 소모량 절감을 얻는 FS2 파일 시스템을 제안
  • 일관성 문제 발생할 수 있으나 주소 테이블에 무효화 연산만을 수행해 쓰기 연산의 효율성을 높였다.

버퍼캐싱 및 사전 인출 기법

: 미래에 요청될 데이터를 미리 알거나 어느 정도 예측할 수 있다면 디스크가 활성 상태일 때 헤드 위치로부터 가까운 데이터를 사전 인출해 향후 디스크의 비활성화 가능성을 높여 전력소모를 줄일 수 있다.

  • 긴급한 요청이 아닌 경우 디스크의 활성 상태 여부에 따라 요청을 최대한 지연 시키는 방식

쓰기전략을 통한 저전력 디스크 기법

: 디스크가 활성상태로 돌아왔을 때 쓰는 방식으로 전력 소모를 줄이는 방안이 연구됨

  • 활성상태가 아니몀 일단 블록드을 로그 디스크에 썼다가 디스크가 활성상태로 돌아왔을 떄 디스크에 쓰기연산을 수행하는 방식
profile
정리하고 기억하는 곳

0개의 댓글