본문 바로가기

Information Technology/OS

[운영체제] Disk Management & Scheduling

이 글은 개인의 학습을 목적으로 정리한 글입니다. 이점 참고하고 읽어주세요;)


디스크 관리 최소 단위 -> 섹터

외부에서는 논리적 블록 단위로 디스크를 관리. 이 논리적 블록이 섹터에 맵핑이 되어서 디스크를 관리.

섹터 0번은 디스크에서 가장 바깥쪽 실린더의 첫 번째 트랙의 첫 번째 섹터. 주로 부팅 영역을 관리

 

- Seek time: 헤드가 해당 실린더(트랙)로 움직이는 데 걸리는 시간. 이게 디스크 접근 시간에서 가장 큰 비중을 차지함. 일종의 기계 장치가 이동하기 때문에 시간이 오래 걸림

- Rotational latency: 디스크가 회전을 해서 디스크 헤드까지 오는 시간. 

- Transfer time: 실제로 데이터를 읽고/쓰는 시간. 굉장히 적은 시간을 차지. 

 

* Disk bandwidth: 단위 시간당 전송된 바이트의 수. 디스크의 성능 척도. seek time을 줄이는 것이 bandwidth를 높이는 것의 주 과제이기 때문에 disk scheduling이 필요함.

 

- Physical Formatting: 디스크를 실제 섹터 단위로 나누는 작업(Low-level formatting)

: 섹터는 실제 논리적 블록과 연결되어 데이터가 저장되는 영역(보통 512Byte) + header + trailer로 구성. header와 trailer에 그 데이터가 잘 저장되었는지 에러를 확인하고(ECC, 해시함수와 비슷, 즉 일관된 크기의 코드) 주소를 저장(메타 데이터). 나중에 디스크 컨트롤러가 데이터를 읽을 때, data부분과 header trailer를 모두 읽어서 저장된 ECC값과, 읽어온 data의 ECC값을 만든 다음 비교해서 베드 섹터가 발생했는지 확인. ECC가 축약본이라 모든 오류를 잡아내기는 어렵지만, 그럼에도 상당 부분의 에러 검출 가능

 

- Partitioning

: formatting이 끝난 섹터 영역들을 묶어줘서 하나의 독립적인 logical disk로 만드는 과정. 운영체제는 물리적 디스크가 아닌 logical disk에 관심

 

- Logical Formatting

: logical disk에 대해 파일 시스템을 만드는 것. FAT(윈도), inode(유닉스) 등등

 

- Booting

: CPU는 오직 메모리 접근만 가능하고, 하드디스크 접근은 사실상 불가능.

메모리 영역 중에는 전원이 나가도 기록되는 소량의 메모리가 존재하는데 이게 바로 ROM. ROM에 부팅을 위한 간단한 loader가 저장되어 있음. 컴퓨터 전원을 켜면 CPU 제어권이 ROM의 주소 가리키고, "small bootstrap load"가 실행. 이 loader가 하드 디스크에서 0번 섹터에 있는 내용을 메모리에 올리고 그걸 실행하라는 지시. sector 0번은 무조건 부트 블록이 위치. 부트 블록을 메모리에 올리고, 그 메모리 영역을 실행하면 부트 블록은 파일 시스템에서 운영체제 커널의 위치를 찾아서 이걸 메모리에 올려서 실행하라고 명령. 이렇게 되면 운영체제가 메모리에 올라가고 운영체제 실행.


다양한 디스크 스케쥴링 알고리즘

요청이 들어온 순서대로 처리. 안쪽과 바깥쪽 트랙이 연달아 오면 헤드의 이동 거리가 길어짐. 대단히 비효율적일 수 있음

 

큐의 요청 중 현재 헤드에서 가장 가까운 위치의 요청부터 처리. 디스크 헤드의 이동거리는 분명하지만, starvation 문제가 발생할 수 있음

엘리베이터 스케쥴링이라고도 부름. 큐에 어떤 위치에 요청이 들어왔든지 디스크 헤드는 항상 가장 안쪽부터 바깥쪽까지 오가면서 가는 경로에 있는 요청을 처리. 하지만 실린더의 위치에 따라 대기 시간이 다름(중간과 끄트머리)

Circular Scan: 헤드의 이동거리는 조금 길어질 수 있지만, 큐에 들어온 요청들 즉, 실린더들의 대기시간 불균형 문제를 해결할 수 있음.

 

N-SCAN: 헤드가 움직이기 시작한 시점 이후에 새롭게 도착한 요청들은 헤드가 가는 길에 있어도 처리 X

LOOK and C-LOOK: 스캔은 항상 끝에서 끝으로 이동. 이를 해결하기 위해 LOOK과 C-LOOK은 해당 방향에 요청이 없으면 헤드의 방향을 전환



디스크의 등장 배경 ->

1) 전원이 나가면 저장한 데이터가 사라지는 메모리의 휘발성 때문.

파일 시스템과 같이 지속적으로 저장되어야 하는 정보들이 저장될 공간의 필요성 대두

 

2) DRAM 메모리 공간의 부족 -> swap area 용도로 사용

물리적 메모리에서 정보를 가져오는 swap area의 경우 디스크에 접근해서 데이터를 가져오는 시간이 오래 걸리기 때문에, 헤드가 움직이는 시간인 seek time을 줄이는 것이 중요함. 어차피 프로세스가 끝나면 사라질 내용들이기 때문에 swap area 공간의 효율성보다는 속도 향상 측면에 집중. -> 파일 시스템 용도의 파티션이 512Byte 크기의 섹터로 나눠지는 반면, swap area 용도의 파티션은 16KB ~512KB까지 다양하고 비교적 큰 단위로 나눠짐. -> 빠른 서비스 보장


저렴한 디스크 여러 개를 묶어서 사용하는 것.   KEY -> 중복 저장 & 분산 저장

- 장점

1) 여러 디스크에 중복 저장되기 때문에 호스트에서 데이터를 읽어오라고 디스크에 요청을 했을 때, 여러 개의 디스크에서 조금씩 병렬적으로 데이터를 분할해서 가져오기 때문에 속도 향상 -> 이러한 기법을 striping 기법이라고 함.

2) 동일 정보를 여러 디스크에 중복 저장하기 때문에 하나의 디스크가 고장 나도 다른 디스크에서 정보를 가져올 수 있는 신뢰성 증가. 이러한 기법은 mirroring, shadowing이라고 함.