운영체제(OS)

Operating Systems 11. Mass-Storage Systems

아뵹젼 2021. 12. 5.

Overview of Mass Storage Structure

Magnetic disk : 대용량 보조기억장치

-> sector 하나가 disk block 하나를 담당한다.

 

transfer rate : 저장장치와 컴퓨터 사이의 데이터 전송 속도

seek time : head 가 해당 트랙에 도달하는 시간

rotation time : 해당 sector 가 header 밑에 도달하기 위해 돌아가는 시간

-> (Positioning time) random-access time : seek time + rotation time

 

 

Hard Disk Performance

 

Disk Scheduling

- 디스크는 대기하는 작업의 처리 순서를 제어하는 여러 알고리즘을 사용한다.

- seek time 을 줄이기 위해서 디스크 스케쥴링이 필요하다. 

- 이때 SSD 는 seek time 이 일정하기 때문에, HDD 에 해당되는 스케쥴링이다.

- 해당 트랙을 찾아가는 seek time 을 어떤 순서로 찾아가는지에 대한 스케줄링 알고리즘을 사용한다.

 

 

FCFS Scheduling

- 큐에 들어온 순서대로 찾아간다.

- 가장 비효율적이다.

 

SSTF Scheduling

- 큐에 있는 것들 중 현재 내 헤드 위치에서 가장 가까운 곳을 탐색한다.

- 평균 seek time 을 가장 줄일 수 있는 optimal 한 방법이다.

- 그러나 head 에서 멀리 있는 것에게 starvation 이 발생할 수 있다. 

 

 

SCAN Scheduling

- 한 방향으로 이동하면서 가는 길에 있는 것들을 탐색하는 방법이다.

- Elavotr algorithm 이라고도 한다.

- 한쪽에 몰리지 않고 starvation 이 발생하지 않는다.

- 일부에게는 기다리는 시간이 매우 길어질 수 있다. (출발한 직후에 이미 지나간 곳에서 요청이 들어오면 반대쪽 방향에서 돌아올때까지 계속 기다려야한다.)

 

C-SCAN (Circular SCAN) Scheduling

- SCAN을 조금 변형한 방법으로, Circular Elevator Algorithm으로도 알려져 있다.

- SCAN이 한 쪽 끝까지 가서 그대로 유턴하여 방향을 바꾸는 것과 다르게 항상 한쪽 끝으로 점프하여 다시 시작한다는 것이 차이점이다.

- C-SCAN 방식은 양끝과 가운데 부분의 요청밀도에 편차를 줄일 수 있어, 대기시간을 좀 더 균등하게 제공할 수 있다.

 

 

Selecting a Disk-Scheduling Algorithm

- SSTF 가 seek time 만 고려했을 때는 가장 일반적이고 이상적이지만, starvation 이 발생할 수 있다. 

- Disk rotation 까지 고려하기에는 OS 에게 무리이다.

 

 

Nonvolatile Memory Device(NVM)

- SSD 나 USB 드라이브가 NVM 의 일환이며 seek time 이 일정하기에 FCFS 스케쥴링을 사용한다.

- Merging 기법 : 요청 중 가까운 공간에 있는 애들을 합쳐서 한 번에 요청

- NAND 반도체 특성 상 Write 할 때마다 기능이 열화되어 wear leveling 기법이 사용된다. 

- wear leveling : FTL은 플래시 블록에 쓸 때 최대한 균등하게 분산하여 메모리를 사용하도록 만들어야 한다.

- DWPD(Drive Writes Per Day) : 제품에 명시된 보증기간을 사용하기 위한 하루 권장 write 회수

 

 

NAND 플래시 제어기 알고리즘

- HDD 에선 가능하지만 NAND 플래시에서는 Block 에서 페이지 단위로 지울 수가 없다.

- 따라서 Flash Translation Layer, FTL 에서 페이지가 쓰여있는지 아닌지를 관리해야 한다.

- 따라서 덮어쓰기를 하려면 valid page 를 미리 옮겨두고, 원래 블럭을 지운 뒤 덮어쓰기 하고자 하는 페이지와 백업해둔 페이지를 다시 써야하는 작업이 필요하다.

-> garbage collection 이라고 한다.

- garbage collection 을 위해서는 valid page 를 옮겨둘 수 있는 free block 이 필요한데 모든 블럭이 사용중이라면 이것이 불가능하니 오버 프로비저닝(Over-provisioning) 기법을 사용함

- 오버 프로비저닝 : 전체 사용량의 80%만 사용자에게 공개하고, 나머지는 free block 으로 사용하는 기법

 

 

Swap-Space Management

- Kerne 은 swap map 을 사용하여 해당 카운터 값이 0이면 사용가능하고 0보다 큰 값은 스왑된 페이지들이 사용하고 있는 것을 나타낸다. 

 

 

RAID Structure

RAID (Redundant Array of Independent Disk)

- 이전의개념 : 싼 디스크를 여러 개 모아 큰 디스크보다 저렴한 가격으로 시스템을 구축하자는 의미였다.

- 요즘 개념 : 하드 디스크가 중복되어 있는 구조

- Mean time to failure(MTTF) : 고장과 고장 사이의 평균 시간

- Mean Time to Repair(MTTR) : 고장을 고치는데 걸리는 평균 시간

- M = 디스크의 수

- Mean Time to Data Loss = (MTTF / M) * (MTTF / MTTR) : 모든 디스크가 고장나서 데이터를 수용할 수 없는 주기

 

- 신뢰성(Reliability) 좋음 -> 중복을 통해 증가시킬 수 있다.

- 성능 (Performance) 좋음 

RAID Levels

(a) : 데이터를 Striping 해서 여러 개를 병렬로 읽을 수 있다. -> 속도를 올린다.

(b) : 중복을 사용한다. -> 신뢰성 증가

 

 

RAID (0+1) and (1+0)

RAID 0 + 1 : 먼저 병렬하게 디스크를 구성한 뒤 디스크들을 복제

RAID 1 + 0 : 디스크를 먼저 복제한 뒤(mirroring) 병렬로 디스크를 재구성

댓글