[운영체제] 12 Disk Management and Scheduling

gramm·2021년 2월 18일
0

운영체제

목록 보기
13/14
post-thumbnail

내용 출처

KOCW 반효경 교수님 <운영체제> 강의
책 <운영체제와 정보기술의 원리>

반효경 교수님의 <운영체제> 강의 내용을 기반으로 정리했으며,

교수님의 저서 <운영체제와 정보기술의 원리>에서 추가할 만한 내용을 이와 같은 인용문 형식으로 추가함.


이 포스팅의 모든 이미지는 <운영체제> 강의에서 가져왔습니다.

디스크 구조


  • 논리 블록 (logical block)

    • 정보를 전송하는 최소 단위
    • 디스크의 외부에서 보는 디스크의 단위 정보 저장 공간들
    • 주소를 가진 1차원 배열처럼 취급한다.
  • 섹터 (sector)

    • 디스크를 관리하는 최소의 단위
    • 각 논리블록이 저장되는 디스크 내의 물리적인 위치
    • sector 0은 최외곽 실린더의 첫 트랙에 있는 첫 번째 섹터다.

디스크 내부적으로는 정보가 sector 단위로 저장되어 있지만,
외부에서 접근할 때는 logical block 단위로 바라본다.



디스크 관리


  • Physical Formatting (Low-level Formatting)

    • 디스크를 컨트롤러가 읽고 쓸 수 있도록 sector 단위로 나누는 과정
    • 각 섹터는 header + 실제 data (보통 512byte) + trailer로 구성된다.
    • header와 trailer는 sector 번호, ECC (Error-Correcting Code) 등의 정보가 저장되며 컨트롤러가 직접 접근하고 운영한다.
    • ECC는 데이터를 축약한 코드로, 오류를 검출하는 용도로 사용된다.
  • Partitioning

    • 디스크를 하나 이상의 실린더 그룹으로 나누는 과정
    • OS는 이것을 독립적인 disk로 취급한다. (logical disk)
  • Logical Formatting

    • logical disk에 파일 시스템을 설치하는 것
    • FAT, inode, free space 등의 구조를 포함한다.
  • Booting

    • 부팅의 절차
        1. ROM에 있는 small bootstrap loader가 실행된다.
          (ROM은 메모리 영역 중 전원이 나가더라도 내용이 유지되는 부분)
        1. loader는 sector 0 (boot block)을 load하여 실행한다.
        1. boot block은 운영체제 커널의 위치를 찾아서 메모리에 올려서 실행한다.
        1. 운영체제가 메모리에 올라가면 부팅이 이루어진다.

참고) ROM (Read-only Memory) : 컴퓨터에 지시사항을 영구히 저장하는 비휘발성 메모리다. 컴퓨터 전원이 꺼져도 ROM에는 영향을 주지 않는다. 읽기 전용 메모리이므로, 사용자가 변경할 수 없다.



디스크 스케줄링

실린더(cylinder) : 여러 개의 원판에서 상대적 위치가 동일한 트랙들의 집합

  • Access time의 구성
    • Seek time (탐색 시간)
      • 디스크 헤드를 해당 실린더로 움직이는데 걸리는 시간
      • 디스크 접근 시간 중 대부분을 차지한다.
    • Rotational latency (회전 지연시간)
      • 디스크 헤드가 원하는 섹터에 도달하기까지 걸리는 회전지연시간
    • Transfer time (전송 시간)
      • 실제 데이터의 전송 시간
      • 디스크 접근 시간 중 일부만을 차지한다.
  • Disk bandwidth
    • 단위 시간 당 전송된 바이트의 수
  • Disk Scheduling
    • seek time을 최소화하는 것이 목표



FCFS 알고리즘


First Come First Served : 들어온 순서대로 처리한다.

  • 총 head의 이동 : 640 cylinders



SSTF 알고리즘


Shortest Seek Time First : 현재 헤드 위치에서 가장 가까운 요청부터 처리한다.

  • 총 head의 이동 : 236 cylinders
  • 문제점 : starvation 문제가 발생할 수 있다.



SCAN 알고리즘


엘리베이터 스케줄링 알고리즘이라고도 한다.

  • disk arm이 디스크의 한쪽 끝에서 다른쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리한다.
  • 다른 한쪽 끝에 도달하면 역방향으로 이동하며 오는 길목에 있는 모든 요청을 처리하며 다시 반대쪽 끝으로 이동한다.
  • 장점 : 디스크 헤드의 이동 거리도 짧아지고, starvation 문제도 발생하지 않는다.
  • 문제점 : 실린더 위치에 따라 대기 시간이 다르다.
    가운데 영역은 양끝에 있는 경우보다 예상 대기 시간이 더 짧다.



C-SCAN 알고리즘

  • 헤드가 한쪽 끝에서 다른쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리한다.
  • 다른쪽 끝에 도달했으면 요청을 처리하지 않고 곧바로 출발점으로 다시 이동한다.
  • SCAN보다 이동 거리는 길어질 수 있지만, 균일한 대기 시간을 제공한다.



N-SCAN 알고리즘


  • SCAN의 변형 알고리즘
  • 일단 arm이 한 방향으로 움직이기 시작하면, 그 시점 이후에 도착한 job은 가는 도중에 처리하지 않고, 되돌아올 때 서비스한다.



LOOK and C-LOOK 알고리즘


  • SCAN이나 C-SCAN은 언제나 헤드가 디스크 끝에서 끝으로 이동한다.
  • LOOK과 C-LOOK은 헤드가 진행 중이다가, 그 방향에 더 이상 기다리는 요청이 없으면 헤드의 이동 방향을 즉시 반대로 이동한다.

헤드가 진행하는 방향에 요청이 있는지를 살핀 후 이동하기 때문에 LOOK이라고 부른다.



디스크 스케줄링 알고리즘의 결정


  • 현대 디스크 시스템에서는 SCAN에 기반한 알고리즘을 주로 쓴다.
  • SCAN, C-SCAN 및 그 응용 알고리즘인 LOOK, C-LOOK 등이 일반적으로 디스크 입출력이 많은 시스템에서 효율적인 것으로 알려져 있다.
  • 파일의 할당 방법에 따라 디스크 요청이 영향을 받는다.
  • 디스크 스케줄링 알고리즘은 필요할 경우 다른 알고리즘으로 쉽게 교체할 수 있도록 OS와 별도의 모듈로 작성되는 것이 바람직하다.



스왑 공간 관리

  • 디스크를 사용하는 두 가지 이유

    • 1) 메모리의 휘발성으로 인해, 파일 시스템처럼 데이터를 영속적으로 유지해야 하는 경우에는 비휘발성의 디스크를 사용한다.
    • 2) 프로그램 전체를 메모리에 올려 놓기에는 메모리 공간이 부족하므로, 메모리의 연장 공간(swap area)으로 디스크를 사용한다.
  • Swap-space

    • 가상 메모리 시스템에서는 디스크를 메모리의 연장 공간으로 사용한다.
    • 파일 시스템 내부에 둘 수도 있으나 별도 partition을 사용하는 것이 일반적이다. 각각의 파티션은 파일 시스템용 혹은 swap area용으로 사용될 수 있다.
      • 공간 효율성보다는 속도 효율성이 우선이다. 따라서 seek time을 줄이기 위해서 swap area에는 매우 큰 단위로 데이터를 올리고 내린다.
      • 일반 파일보다 훨씬 짧은 시간만 존재하고 자주 참조된다.



RAID


Redundant Array of Independent Disks : 여러 개의 디스크를 묶어서 사용하는 것

  • 사용 목적
    • 디스크 처리 속도 향상
      • 여러 디스크에 block의 내용을 분산 저장한다.
      • 병렬적으로 읽어 온다. (interleaving, striping)
    • 신뢰성 향상
      • 동일 정보를 여러 디스크에 중복 저장한다.
      • 하나의 디스크가 고장(failure) 시 다른 디스크에서 읽어온다.
        (mirroring, shadowing)
      • 단순한 중복 저장이 아니라 일부 디스크에 parity를 저장하여 공간의 효율성을 높일 수 있다.



디스크의 저전력 관리 - 비활성화 기법

디스크의 상태는 전력 소모를 기준으로 4가지로 나눌 수 있다.

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

디스크가 회전하고 있는 활성 상태보다는 정지하고 있는 비활성 상태에서 전력 소모가 적으므로, 요청이 없을 경우 디스크를 정지시키는 것이 좋다. 하지만 각 상태로 전환할 때는 부가적인 전력 및 시간이 소모된다. 따라서 후속 요청까지의 시간 간격이 일정 시간 이상일 경우에만 디스크 회전을 정지시키는 것이 전력 소모 절감에 효과적이다.

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

  • 시간기반 기법 : 일정 시간 동안 디스크가 공회전 상태이면 장치를 정지시켰다가, 다시 요청이 왔을 때 디스크를 활성화한다.

  • 예측기반 기법 : 과거 요청을 관찰하여 다음 공회전 구간의 길이를 예측한 후 디스크를 비활성화할 시점을 결정한다.

  • 확률기반 기법 : 디바이스의 상태변경 시간 간격을 구하기 위해 확률분포를 통해 요청을 모델링하고 통계적 모델을 이용한다.

profile
I thought I introduced

1개의 댓글

comment-user-thumbnail
2024년 1월 17일

강의를 들을때 참고하면서 많은 도움이 되었습니다. 감사합니다🤍

답글 달기