내용 출처
KOCW 반효경 교수님 <운영체제> 강의
책 <운영체제와 정보기술의 원리>
반효경 교수님의 <운영체제> 강의 내용을 기반으로 정리했으며,
교수님의 저서 <운영체제와 정보기술의 원리>에서 추가할 만한 내용을 이와 같은 인용문 형식으로 추가함.
이 포스팅의 모든 이미지는 <운영체제> 강의에서 가져왔습니다.
디스크 구조
-
논리 블록 (logical block)
- 정보를 전송하는 최소 단위
- 디스크의 외부에서 보는 디스크의 단위 정보 저장 공간들
- 주소를 가진 1차원 배열처럼 취급한다.
-
섹터 (sector)
- 디스크를 관리하는 최소의 단위
- 각 논리블록이 저장되는 디스크 내의 물리적인 위치
- sector 0은 최외곽 실린더의 첫 트랙에 있는 첫 번째 섹터다.
디스크 내부적으로는 정보가 sector 단위로 저장되어 있지만,
외부에서 접근할 때는 logical block 단위로 바라본다.
디스크 관리
참고) ROM (Read-only Memory) : 컴퓨터에 지시사항을 영구히 저장하는 비휘발성 메모리다. 컴퓨터 전원이 꺼져도 ROM에는 영향을 주지 않는다. 읽기 전용 메모리이므로, 사용자가 변경할 수 없다.
디스크 스케줄링
실린더(cylinder) : 여러 개의 원판에서 상대적 위치가 동일한 트랙들의 집합
- Access time의 구성
- Seek time (탐색 시간)
- 디스크 헤드를 해당 실린더로 움직이는데 걸리는 시간
- 디스크 접근 시간 중 대부분을 차지한다.
- Rotational latency (회전 지연시간)
- 디스크 헤드가 원하는 섹터에 도달하기까지 걸리는 회전지연시간
- Transfer time (전송 시간)
- 실제 데이터의 전송 시간
- 디스크 접근 시간 중 일부만을 차지한다.
- Disk bandwidth
- Disk Scheduling
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) : 디스크가 회전하지 않고 인터페이스도 비활성화된 상태
디스크가 회전하고 있는 활성 상태보다는 정지하고 있는 비활성 상태에서 전력 소모가 적으므로, 요청이 없을 경우 디스크를 정지시키는 것이 좋다. 하지만 각 상태로 전환할 때는 부가적인 전력 및 시간이 소모된다. 따라서 후속 요청까지의 시간 간격이 일정 시간 이상일 경우에만 디스크 회전을 정지시키는 것이 전력 소모 절감에 효과적이다.
디스크를 비활성화하는 시점을 결정하는 방법
-
시간기반 기법 : 일정 시간 동안 디스크가 공회전 상태이면 장치를 정지시켰다가, 다시 요청이 왔을 때 디스크를 활성화한다.
-
예측기반 기법 : 과거 요청을 관찰하여 다음 공회전 구간의 길이를 예측한 후 디스크를 비활성화할 시점을 결정한다.
-
확률기반 기법 : 디바이스의 상태변경 시간 간격을 구하기 위해 확률분포를 통해 요청을 모델링하고 통계적 모델을 이용한다.
강의를 들을때 참고하면서 많은 도움이 되었습니다. 감사합니다🤍