Disk Management
* Physical Formatting (Low-Level Formatting)
- 디스크를 컨트롤러가 읽고 쑬 수 있도록 섹터들로 나누는 과정
- 각 섹터는 header + 실제 data(보통 512 byte) + trailer로 구성된다.
- header과 trailer는 section number, ECC(Error - Connectiong Code)등의 정보가 저장되며 controller가 직접 접근 및 운영
* Partitioning
- 디스크를 하나 이상의 실린더 그룹으로 나누는 과정
- OS는 이것을 독립적 disk로 취급
* Logical Formatting
- 파일 시스템을 만드는 것
- FAT, inode, free space 등의 구조를 포함한다.
* Booting
- ROM에 있는 "small bootstrap loader"의 실행
- sector 0(boot block) 에 있는 load하여 실행 메모리에 올림
- sector 0은 "fall bootstrap loader program" (운영체제 커널의 파일을 메모리에 올리렴)
1. Disk Structure
* Logical Block
- 디스크를 외부(컴퓨터 호스트)의 내부에서 보는 디스크의 단위 정보 저장 공간들
- 주소를 가진 1차원 배열처럼 취급
- 정보를 전송하는 최소 단위
* Sector
- Logical Bolck이 물리적인 디스크에 매핑된 위치
- Sector 0은 최외곽 실린더의 첫 트랙에 있는 첫번째 섹터이다. -> 부팅과 관련용
- 디스크 내부에서 관리하는 단위
<디스크의 물리적 구조>
각각의 원판은 트랙으로 구성
각 트랙은 섹터로 나뉨
섹터에 최소한의 단위 정보를 저장한다.
2. Disk Scheduling
* Access Time
- seek time : 헤드를 해당 실린더로 움직이는데 걸리는 시간
- rotational latenct : 헤드가 원하는 섹터에 도달하기까지 걸리는 회전 지연 시간
- Transfer time : 실제 데이터의 전송 시간
* Disk bandwidth
단위 시간 당 전송된 바이트의 수(seek time 줄이는 것이 관건
* Disk scheduling
결국 seek time을 줄이는 (최소화 하는 것이 목표) seek time = seek distance
Disk Scheduling Algorithm
1) FCFS(First Come First Served)
디스크에 먼저 들어온 요청을 먼저 처리하는 방식
디스크 알고리즘은 seek time을 줄이는 것이 관건이고 그러려면 seek distance가 짧아야 하는데 FCFS는 최악의 경우 입출력 요청이 디스크의 한쪽 끝과 한쪽 끝에 있다면 헤드가 계속 양극을 왔다갔다 해야하기 때문에 탐색 시간이 매우 비효율적으로 높아진다.
2) SSTF(Shortest Seek Time First)
헤드의 현재 위치로부터 가장 가까운 위치에 있는 요청을 제일 먼저 처리하는 알고리즘.
헤드의 이동거리를 줄여 효율적일수 있으나 starvation 문제가 발생할 수 있다.
3) SCAN (엘리베이터 스케줄링)
- disk arm이 디스크의 한쪽 끝에서 다른 한쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리한다.
- 다른 한쪽 끝에 도달하면 역방향으로 이동하며 오는 길목에 있는 모든 요청을 처리하며 다시 반대쪽 끝으로 이동한다.
- 문제점: 실린더의 위치에 따라 대기 시간이 다르다. 제일 안쪽이나 제일 바깥쪽 위치 보다는 가운데 위치가 기다리는 평균시간이 더 짧다는 불공평함이 존재함
4) C-SCAN
C-SCAN(Circular-SCAN)
SCAN처럼 헤드가 한쪽 끝에서 다른 쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리한다. 그러나 SCAN과 다른 점은 헤드가 다른 쪽 끝에 도달하면 거기서 다시 원래 위치로 가며 요청을 처리하는 것이 아니라, 원래 위치로 이동만 한다. 그런 다음 다시 다른쪽 끝으로 가며 요청을 처리한다.
각 실린더의 위치에 대해 균일한 대기 시간을 제공하지만 이동 거리는 길 수 있다.
5) LOOK과 C-LOOK
SCAN알고리즘은 요청의 존재 여부와 관계 없이 헤드가 무조건 디스크의 한쪽 끝에서 끝으로 이동한다. 그러나 LOOK 알고리즘은 헤드가 한쪽 방향으로 진행 중이다가 그 방향에 더 이상 기다리는 요청이 없으면 헤드의 이동 방향을 즉시 반대로 이동한다. 헤드가 진행하는 방향에 요청이 있는지 살핀후 이동하기 때문에 LOOK이라는 이름이 붙었다고 한다.
한편 C-LOOK 알고리즘은 전방에 요청이 없을 때 방향을 바꾼다는 측면에서는 LOOK과 유사하며, 한쪽 방향으로 이동할 때에만 요청을 처리한다는 점에서 C-SCAN과 비슷하다.
<Disk Scheduling Algorithm의 결정>
SCAN, C-SCAN 및 그 응용 알고리즘은 LOOK, C-LOOK 등이 일반적으로 디스크 입출력이 많은 시스템에서 효율적인 것으로 알려져 있다.
file의 할당 방법에 따라 디스크의 요청이 영향을 받음
디스크 스케줄링 알고리즘은 다른 알고리즘으로 쉽게 교체할 수 있도록 OS와 별도의 모듈로 작성하는 것이 바람직하다.
'CS > operating system' 카테고리의 다른 글
Deadlock: 교착 상태 (1/2) (0) | 2021.02.25 |
---|---|
Disk Management: 디스크 관리 (2/2) (0) | 2021.02.24 |
Virtual Memory: 가상 메모리 (2/2) (0) | 2021.02.22 |
Virtual Memory: 가상 메모리 (1/2) (0) | 2021.02.19 |
Memory Management: 메모리 관리 (3/3) (0) | 2021.02.18 |