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

진예·2024년 1월 19일
0

Operating System

목록 보기
8/8
post-thumbnail

💡 디스크 관리

📒 디스크

디스크 (Disk) : 컴퓨터 시스템의 2차 저장 장치

: 컴퓨터의 메모리휘발성이므로 전원을 끄면 내용이 모두 사라진다. 수행 결과를 영구적으로 보관하고 싶은 경우에는 비휘발성 저장장치인 디스크 등에 수행 결과를 저장해야 한다.


📝 구조

  • 논리 블록 : 일정한 크기의 저장 공간
  • 섹터 : 논리 블록이 저장되는 디스크 내의 물리적인 위치

: 디스크는 마그네틱 원판 구조로 구성된다. 각 원판트랙으로 구성되고, 각 트랙섹터로 나뉘어 한 섹터하나의 단위 정보가 저장된다.

하나의 디스크 내에 원판이 하나일수도, 여러 개일 수도 있는데, 원판이 여러 개인 경우 상대적 위치가 동일한 트랙들의 집합실린더라고 한다.

디스크에서 데이터를 읽고 쓰기 위해서는 해당 섹터가 위치한 실린더로 이동한 후, 원판이 회전하여 디스크 헤드가 해당 섹터 위치에 도달해야 한다.


📒 디스크 스케줄링

접근 시간 = 탐색 시간 + 회전지연 시간 + 전송 시간

  • 탐색 시간 : 디스크 헤드를 해당 실린더 위치로 이동시키는 시간
  • 회전지연 시간 : 읽고 쓰려는 섹터헤드 위치에 도달하는 시간
  • 전송 시간 : 실제로 데이터를 읽고 쓰는데 걸리는 시간

디스크의 입출력 효율을 높이기 위해서는 접근 시간을 최소화해야 한다. 그런데, 회전 지연 시간과 전송 시간은 운영체제에서 통제하기 힘든 부분이므로, 탐색 시간을 줄여야 한다.

탐색 시간을 줄이기 위해서는 디스크 헤드의 움직임을 최소화할 필요가 있다. 디스크 스케줄링을 통해, 여러 섹터에 입출력 요청이 들어왔을 때 어떠한 순서로 처리할 지 결정할 수 있다. 즉

디스크 스케줄링의 목표는 디스크 헤드의 이동 거리를 줄이는 것이다!


📝 FCFS

먼저 들어온 요청을 먼저 처리

ex) 요청 순서 : 99 184 36 123 15 125 66 68

: 요청 간 거리에 상관 없이 무조건 요청 순서대로 처리하므로, 연속된 요청이 디스크의 각 끝에서 발생한 경우 끝과 끝을 왕복하며 처리해야 하므로 굉장히 비효율적이다.


📝 SSFT

헤드의 현재 위치로부터 가장 가까이 위치한 요청을 먼저 처리

ex) 요청 순서 : 99 184 36 123 15 125 66 68, 헤드의 현재 위치 : 54

: 현재 헤드 위치로부터 가까운 곳에서 계속 요청이 들어오는 경우, 먼 곳에서 발생한 요청은 무한정 기다려야 하는 기아 현상이 발생할 수 있다.


📝 SCAN

헤드가 원판의 안쪽 끝바깥쪽 끝을 오가며, 경로에 존재하는 모든 요청을 처리

ex) 요청 순서 : 99 184 36 123 15 125 66 68, 헤드의 현재 위치 : 54

: 54번에서 한쪽 끝인 0을 향해 이동하면서, 해당 범위 안에서 발생한 요청을 처리한다. 0번에 도달하게 되면 반대쪽 끝199번을 향해 이동하면서 해당 범위 내에서 발생한 요청을 처리한다.

만약, 헤드가 특정 위치를 지난 후에 해당 위치에서 요청이 발생하게 되면 헤드가 끝까지 갔다가 돌아올 때까지 기다려야 하는 문제가 발생한다.


📝 C-SCAN

기본적인 로직은 SCAN과 같으나, 헤드가 다른 쪽 끝에 도달방향을 바꾼 후 요청을 처리하지 않고 곧바로 출발점으로 이동

ex) 요청 순서 : 99 184 36 123 15 125 66 68, 헤드의 현재 위치 : 54

: 헤드가 끝쪽199번으로 이동하면서 해당 범위 내의 요청을 처리하는 것은 SCAN과 같지만, 199번에 도달한 후 요청을 처리하면서 0번으로 이동하는 것이 아닌 곧바로 0번으로 이동하여 다시 199번으로 이동하면서 요청을 처리한다. 이러한 방법을 사용하면 균일한 탐색시간을 가지게 된다!


📝 LOOK & C-LOOK

헤드가 한 쪽 방향으로 이동하다가, 더 이상 대기 중인 요청이 없는 경우 이동 방향을 반대로 바꾸는 방식 (LOOK : SCAN / C-LOOK : C-SCAN)

ex) 요청 순서 : 99 184 36 123 15 125 66 68, 헤드의 현재 위치 : 54

: 해당 그래프는 C-LOOK 을 적용한 결과이다. 54번에서 시작하여 199번으로 이동하는 과정에서 발생한 요청을 처리하는데, 184번 이후로 대기 중인 요청이 없으므로 184번까지만 이동하여 처리하고 방향을 바꾸어 곧바로 출발점으로 이동한다. 이 때, 출발점 근처에서 가장 먼저 발생한 요청15이므로 15번으로 이동하여 다시 199번으로 이동하며 요청을 처리한다.

C-LOOK이 아닌 LOOK을 적용한다면, 184번에서 방향을 바꾸어 36 → 15 순서로 처리할 것이다.


📝 다중 디스크 환경

많은 사용자가 사용하는 서비스에서는 다수의 디스크동일한 정보를 중복 저장하여 시스템의 성능과 신뢰성을 향상시킨다.

만약 중복 저장된 정보에 대한 요청이 들어온다면, 여러 개의 디스크 중 어떤 디스크에서 요청을 처리할지 결정해야 한다.

단순히 탐색 시간을 줄이기 위해서는 현재 헤드의 위치에서 가장 가까운 디스크를 선택할 수 있고, 좀 더 거시적인 관점으로 보면 모든 디스크에 요청이 골고루 분배되도록 부하 균형을 고려할 수도 있다. 또한, 전력 절감 측면에서는 여러 디스크를 사용하는 대신 한 디스크에서 집중적으로 요청을 처리할 수도 있다.

이처럼, 시스템이 사용되는 형태에 따라 맞는 방법을 선택할 수 있다!


📒 저전력 관리

📝 비활성화 기법

✔️ 디스크의 상태 (전력 소모 기준)

  • 활성화 상태
    • 활동 : 현재 헤드가 데이터를 읽거나 쓰고 있는 상태
    • 공회전 : 회전 중이지만 데이터를 읽거나 쓰지는 않는 상태

  • 비활성화 상태
    • 준비 : 디스크가 회전하지 않지만 인터페이스가 활성화된 상태
    • 휴면 : 디스크가 회전하지 않고, 인터페이스도 비활성화된 상태

일반적으로는 요청이 없는 경우에는 비활성화 상태로 전환하는 것이 좋다. 하지만, 비활성 상태에서 활성 상태로 전환하기 위해서는 부가적인 시간과 전력이 발생하므로, 후속 요청까지의 시간 간격을 고려하여 비활성화 상태로 전환시키는 것이 좋다.

✔️ 비활성화 시점 결정 방법

  • 시간 기반 : 일정 시간 동안 디스크가 공회전 상태이면 정지요청이 들어오면 활성화

  • 예측 기반 : 과거의 요청을 관찰하여 다음 공회전 구간의 길이예측

  • 확률 기반 : 통계적 모델을 사용하여 상태 변경 시간 간격을 구함


📝 회전속도 조절 기법

디스크의 회전속도를 가변적으로 조절


📝 디스크의 데이터 배치 기법

FS2 파일 시스템 : 디스크 내에 데이터의 복제본을 많이 만들어, 헤드 위치에서 가까운 복제본에 접근


📝 버퍼캐싱 및 사전인출 기법

긴급한 요청이 아닌 경우, 요청을 최대한 지연시켜 활성화 되었을 때 사전인출 수행


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

디스크가 비활성 상태일 때는 쓰기를 하지 않고 기다렸다가, 활성 상태가 되었을 때 쓰는 방식


🙇🏻‍♀️ 출처 : 운영체제와 정보기술의 원리

profile
백엔드 개발자👩🏻‍💻가 되고 싶다

0개의 댓글