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) 좋음
(a) : 데이터를 Striping 해서 여러 개를 병렬로 읽을 수 있다. -> 속도를 올린다.
(b) : 중복을 사용한다. -> 신뢰성 증가
RAID (0+1) and (1+0)
RAID 0 + 1 : 먼저 병렬하게 디스크를 구성한 뒤 디스크들을 복제
RAID 1 + 0 : 디스크를 먼저 복제한 뒤(mirroring) 병렬로 디스크를 재구성
'운영체제(OS)' 카테고리의 다른 글
Operating Systems 15. File System Internals (0) | 2021.12.05 |
---|---|
Operating Systems 14. File System Implementation (0) | 2021.12.05 |
Operating Systems 13. File System Interface (0) | 2021.12.05 |
Operating Systems 12. File Management (0) | 2021.12.05 |
Operating Systems 8. Deadlocks (0) | 2021.12.05 |
댓글