Disk Structure
- Logical Block
- 디스크 외부에서 보는 디스크 단위 정보 저장 공간
- 주소를 가진 1차원 배열처럼 취급
- 정보를 전송하는 최소 단위
- Sector
- Logical Block 이 실제 물리적인 디스크에 매핑된 위치
- Sector 0 : 가장 바깥쪽 실린더의 첫 트랙의 첫번째 섹터로 부팅 관련 정보가 들어감.
Disk Management
- 디스크를 컨트롤러가 읽고 쓸 수 있도록 섹터들로 나누는 과정
- 각 섹터는 header + 실제 Data (512 byte) + trailer 로 구성
- header 와 trailer 에는 부가 정보가 들어감
- sector number, ECC (Error Correcting Code) ...
- ECC : 해당 data 의 hash 함수 값을 저장해서
저장된 hash 값 == hash(data) 인지 확인해서 배드 섹터인지 확인.
ECC 의 규모에 따라 Error 수정이 가능한 경우도 있다.
- Controller 가 직접 접근 및 운영
- 옛날엔 직접 하기도 했으나 요즘에는 HDD 를 사면 이 과정은 이미 되어서 나옴.
Partitioning
- 디스크를 하나 이상의 실린더 그룹으로 나누는 과정
- OS 는 이것을 독립적인 disk 로 취급 (logical disk)
- 파티션에 파일시스템을 설치
- FAT, iNode, free space 등의 구조 포함.
Booting
CPU 는 메모리에만 접근 할 수 있다. 그런데 메모리는 전원이 꺼지면 내용이 휘발됨 -> 어떻게 부팅..? -> ROM 이라는 전원이 꺼져도 내용이 유지되는 작은 HW 사용.
- 컴퓨터 전원을 켜면 CPU 가 ROM 을 가르키게 됨.
- ROM 에 있는 small bootstrap loader 실행
- sector 0 (boot block) 을 load 하여 실행
- sector 0 은 full bootstrap loader 를 실행
- OS 를 디스크에서 load 하여 실행
Disk Scheduling
Access Time 의 구성
- Seek Time
- 헤드를 해당 실린더로 움직이는데 걸리는 시간 (in-out)
- 기계 장치가 이동해야해서 시간이 많이 걸림
- Rotational Latency
- 헤드가 원하는 섹터에 도달하기까지 걸리는 회전 지연 시간
- Transfer Time
Disk bandwidth
Disk Scheduling
- Disk bandwidth 를 높이기 위해
- seek time 을 최소화하는 것이 목표.
- Seek time ~= Seek distance
Algorithm
- 53에서 시작 (실린더 위치는 0~199)
- 요청 : 98 183 37 122 14 124 65 67
FCFS
First Come First Service
SSTF
Shortest Seek Time First
- Startvation : 짧은게 계속 들어오면 멀리 있는 것은 절대 접근하지 못할 수 있음.
SCAN
elevator scheduling
- disk arm 이 디스크 한쪽 끝에서 반대쪽 끝까지 이동하면서 가는 길목에 있는 모든 요청을 처리
- 한쪽 끝에 도착하면 다시 반대쪽으로 이동하면서 오는 길목에 있는 모든 요청 처리
- 문제점 : 실린더의 위치에 따라 대기 시간이 다르다. (가장자리 쪽이 덜 기다림)
C-SCAN
- 한쪽 끝에서 다른 쪽 끝까지 가면서 길목에 있는 모든 요청 처리
- 다른쪽 끝에 도달하면 요청을 처리하지 않고 출발점으로 이동
- 이동 거리는 조금 길어지지만 SCAN 보다 균일한 대기 시간
N-SCAN
- arm 이 한 방향으로 움직이기 시작하면 그 시점 이후에 도착한 job 은 돌아올 때 service (가는 도중에 들어온 건 다음에 처리)
LOOK
- SCAN : 헤드가 디스크 끝에서 끝으로 이동
- LOOK : 헤드가 한쪽으로 진행하다가 그 방향에 더 처리할 요청이 없으면 헤드 이동 방향을 반대로 틀어서 이동 시작.
C-LOOK
- C-LOOK : 한쪽으로 가고 그 방향 끝 요청에 다다르면 맨 처음 요청으로 돌아와서 다시 같은 방향으로 처리 시작.
결정
- SCAN, C-SCAN / LOOK, C-LOOK 이 일반적으로 디스크 입출력이 많은 시스템에서 효율적.
- File 할당 방법에 따라 디스크 요청도 영향을 받는다.
- ex) 연속 할당 -> 헤드 이동이 줄어듬.
- 요즘은 여러 요청을 merge 해서 한꺼번에 처리
- 필요할 경우 다른 알고리즘으로 교체할 수 있도록 OS 와 별도의 모듈로 작성하자.
Swap-Space Management
Disk 를 사용하는 2가지 이유
- memory 는 휘발성이라서 -> file system (유지해야 하는 정보를 저장)
- 프로그램 실행을 위한 memory 공간 부족 -> swap area
Swap-Space
- Virtual Memory System 에서는 디스크를 memory 의 연장 공간으로 사용
- 파일 시스템 내부에 둘 수도 있으나 별도의 partition 사용이 일반적
- 공간효율성보다는 속도 효율성이 우선 (seek time 을 줄여야 함)
- 일반 파일보다 훨씬 짧은 시간만 존재 (곧 사라질거니 큰 단위여도 괜찮음) 하고 자주 참조됨.
- 따라서, block 의 크기 및 저장 방식이 일반 파일시스템과 다름
RAID
Redundant Array of Independent Disk
여러개의 디스크를 묶어서 사용 (중복 저장 or 분산 저장)
사용 목적
- 디스크 처리 속도 향상
- 여러 디스크에 block 내용을 분산 저장
- 병렬적으로 읽어 옴 (interleaving : 동시에 읽음, striping : 조금씩 저장)
- 신뢰성 향상
- 동일 정보를 여러 디스크에 중복 저장
- 하나의 디스크가 고장나도 다른 디스크에서 읽어올 수 있다 (Mirroring, Shadowing)
- 단순히 통으로 디스크를 중복 저장할 수도 있고,
- 일부 디스크에 parity 를 저장해서 오류가 생겼는지 감지하고 복구할 수 있을 만큼만 저장해서 공간 효율성을 높일 수도 있다.
출처 / 참고
반효경 교수님의 2014 운영체제 12. Disk Management and Scheduling 2 강의를 듣고 포스팅하고,
공룡책을 읽고 추가 정리합니다.
사진 출처는 강의 자료.