[OS(2)]Disk Management and Scheduling 1
Disk Structure


- 디스크의 최소 단위 : sector
- sector는 디스크 내부에서 데이터를 관리하는 가장 작은 단위이며, 데이터의 읽기/쓰기 요청은 디스크 컨트롤러가 직접 처리한다.
- 디스크 외부에서 접근하는 단위 : logical block
- logical block은 운영체제나 파일 시스템이 디스크에 접근할 때 사용하는 단위이며, sector에 매핑되어 저장된다.
Disk Scheduling

Disk Management

- 디스크를 컨트롤러가 읽고 쓸 수 있도록 sector 단위로 나누는 과정을 의미한다.
- 일반적으로 각 sector는
header + 실제 data + trailer
로 구성된다.
- header
와 trailer
에는 다음과 같은 정보가 포함된다.
- sector number: 해당 섹터의 번호
- ECC(Error-Correcting Code): 데이터 오류를 검출하고 수정하는 코드
- 이 정보들이 저장됨으로써 디스크 컨트롤러가 직접 데이터에 접근하고 운영할 수 있음.
2. Partitioning
- 디스크를 하나 이상의 실린더 그룹으로 나누는 과정을 의미한다.
- 이렇게 나뉜 각각의 영역을 OS는 독립적인 논리 디스크로 인식 하여 관리한다.
- ex) 디스크 하나를 사서, c드라이브, d드라이브로 파티션을 나누면 각각이 서로 다른 logical disk가 된다.
- 각각의 파티션을 파일 시스템 용도, swap area 용도로도 사용 가능
- 위에 생성한 파티션에 파일 시스템을 설치하는 것. !
- 파일 시스템을 생성하는 과정을 의미한다.
- 논리적 포맷팅을 하면 다음과 같은 파일 시스템의 구조가 생성된다.
- FAT(file alloacation table): 파일 시스템에서 데이터 저장 위치를 관리하는 테이블
- inode: 파일의 메타데이터(파일 크기, 권한, 위치 정보 등)를 저장하는 구조체
- free space: 사용되지 않은 공관을 관리하는 영역
4. Booting (부팅 과정)
- ROM에 있는
small bootstrap loader
가 실행됨 => 이 부트스트랩 로더는 os를 로드하는 역할을 함.
- sector 0에서 부트로더를 로드하고 실행 => 부팅 시 가장 먼저 읽히는 영역.
- sector 0에는
full Bootstrap loader program
이 포함=> 이 프로그램이 OS를 로드하는 역할을 함.
- OS가 디스크에서 로드되면서 실행됨.
Disk Scheduling Algorithm
FCFS(First Come First Service)

SSTF(Shortest Seek Time First)

- 현재 헤드 위치에서 제일 가까운 요청을 가장 먼저 처리한다.
- starvation 문제가 생긴다. (헤드가 멀리있는 곳으로 안가게 될 수 있음)
SCAN

- 가장 간단하면서도 획기적임
- 엘리베이터 스케쥴링이라고 불리기도 함.
- disk head 이동 거리도 짧아지고
- starvation 문제도 안생김

- 그런데 실린더 중간에 있으면 대기 시간이 평균적으로 짧은데, 끝에 있으면 대기 시간이 평균적으로 길다는 문제점이 생김.
C-SCAN

- circular scan임.
- 이동거리는 좀 길어질 수 있지만, 가운데 쪽 요청이나 가장자리 쪽 요청이나 평균적으로 기대할 수 있는 시간이 균일하다.
Other Algorithms

- n-scan : 이동하는 동안에 큐에 들어온 요청은 다음 이동때 처리

- LOOK and C-LOOK
- scan하고 c-scan의 약간의 비효율적인 측면을 개선
- 요청이 있든 없든간에 항상 끝에서 끝으로 이동. 끝까지 다 찍고 나서 turn하고 들어오는 방식
- 그런데 그쪽 방향으로 요청이 없으면 갈 필요 없잖아.
- 더이상 그 쪽 방향으로 요청이 없으면, 거기서 방향을 바꿔버려.
Disk-Scheduling Algorithm의 결정
