Disk Structure
- logical block
- 디스크 외부에서 보는 디스크 단위 정보 저장 공간들
- 주소를 가진 1차원 배열처럼 취급
- 정보를 전송하는 최소 단위
- Sector
- logical block이 물리적 디스크에 매핑된 위치
- 디스크 내부의 가장 작은 관리 단위
- Sector 0은 최외각 실린터 첫 트랙의 첫 섹터.
Disk Management
- physical formatting (Low-level formatting)
- 디스크를 컨트롤러가 읽고 쓸 수 있도록 섹터로 분할하는 과정
- 각 섹터는 header + 실제 data + trailer로 구성
- header와 trailer는 (주소 매핑 위한) Sector #, ECC(Error-Correcting Code)를 저장
- Controller가 data 접근에 필요한 부가 정보. 직접 접근 및 운영.
- Partitioning
- 디스크를 하나 이상의 실린더 그룹으로 나누는 과정
- OS는 이것을 독립적 Disk로 취급 (logical disk)
- 이후 file system / swap area 용도로 사용 가능
- Logical formatting
- file system을 설치하는 것
- FAT, inode, free space 등의 구조 포함
- Booting
- ROM에 있는 "small bootstrap loader" 실행
- ROM은 메모리 내 존재하는 소량의 비휘발성 공간
- loader는 Sector 0 실행하라고 명령.
- Sector 0는 boot block 위치.
- OS를 디스크에서 Load, 실행
Access Time
대부분의 소요 시간은 Seek time
- Seek time
- 헤드가 해당 실린더로 움직이는데 걸리는 시간
- Rotational latency
- disk는 회전 중 ...
- 헤드가 원하는 섹터로 도달하기까지 걸리는 회전 지연 시간
- Seek time 의 1/10 가량
- Transfer time
- 실제 데이터 전송 시간 (매우 작다)
Disk bandwidth
단위 시간당 전송된 바이트의 수
Disk Scheduling
Seek time 최소화가 목표. Disk bandwidth를 높여보자.
Seek time = Seek Distance
헤드 움직이는 시간을 최소화할 수 있도록 Scheduling
FCFS (First Come First Service)
들어온 순서대로 헤드 이동
딱 봐도 비효율적임.SSTF (Shortest Seek Time First)
지금 현 상황에서 가장 가까운 요청 방문
Starvation 문제 발생SCAN (Elevator Scheduling)
disk arm이 디스크 양 끝을 오가면서 길목에 있는 모든 요청 처리 (요청 순서와는 무관)
head 이동 거리 감소. Starvation 해결.
실린더 위치에 따라 대기 시간이 다른 문제 발생 (가운데는 자주 방문. 양 끝은 덜 방문)C-SCAN
한 쪽 끝(A)에서 다른 쪽 끝(B)까지 head가 이동하며 요청 처리.
B에 도착 시 A로 되돌아 간다. 이때는 요청 처리하지 않고 이동만 함.
SCAN보다 균일한 대기 시간 제공N-SCAN
SCAN의 변형
출발지에서 들어온 요청들만 먼저 처리하기로 계획. 도중에 들어오는 요청은 무시.C-LOOK
Scan / C-Scan의 문제 해결. (max 요청과 min 요청을 넘어가는 범위까지 탐색)
요청의 max, min까지만 탐색하고 방향 전환효율적 알고리즘
Scan, C-Scan, N-Scan, C-Look이 보통 효과적 ..
File의 할당 방법에 따라 디스크 요청이 영향 받음
디스크 스케쥴링 알고리즘은 필요할 경우 다른 알고리즘으로 쉽게 교체할 수 있도록 OS와 별도의 모듈로 작성되는 것이 바람직하다.
Disk를 사용하는 두 가지 이유
- memory의 휘발적 특성.
- 프로그램 실행을 위한 Memory 공간 부족 -> swap space (메모리 연장 공간)
Swap Space
Virtual memory system에서는 디스크를 memory 연장 공간으로 사용
파일 시스템 내부에 둘 수도 있으나 별도의 partition 사용이 일반적
- 공간 효율성보다 속도 효율성이 먼저 (빨리 제거, 빨리 참조 ... 어차피 곧 지워지는 영역)
- 일반 파일보다 훨씬 짧은 시간만 존재하고 자주 참조
- 때문에 block의 크기와 저장 방식이 일반 file system과 다르다. (보다 대용량)
RAID (Redundant Array of Independent Disks)
여러 개의 디스크를 묶어서 사용 (중복 저장, 분산 저장 ...)
RAID 사용 목적
- 디스크 처리 속도 향상
- 여러 디스크에 block의 내용을 분산 저장
- 병렬적으로 읽어 옴 (interleaving, striping) 빠르다.
- 신뢰성 (reliability) 향상
- 동일 정보를 여러 디스크에 중복 저장
- 하나의 디스크가 고장(failure) 시 다른 디스크에서 읽어옴 (mirroring, shadowing)
- 단순한 중복 저장이 아닌, 일부 디스크에 parity 저장하여 공간의 효율성 높임
- parity : 오류 체크, 동일성 보장할 수 있는 정도만 저장