floatFirstTOC: right
🖥️ 시작하며🔍 Secondary Storage🔍 HDD📌 Segate HDD 구조📌 디스크 관리⚙️ 운영체제는 디스크 접근을 하기 위한 여러 수준의 방법을 제공📌 Disk Performance1️⃣ 탐색 (Seek)2️⃣ 회전 (Rotation)3️⃣ 전송 (Transfer)📌 Disk Scheduling📌주요 디스크 스케줄링 알고리즘💡 요즘은 Disk가 보통 SSD를 쓰기 때문에 디스크 스케줄링을 쓰지 않음, 자체적으로 수행📌 Modern Disks⚙️ Intelligent controllers⚙️ Intelligent 기능:📌 I/O 스케줄러의 역할1️⃣ Improve Overall Disk Throughput (전반적인 디스크 처리량 향상)2️⃣ Prevent Starvation (기아 방지)3️⃣ Provide Fairness (공정성 제공)4️⃣ Guarantee Quality-of-Service (QoS) Requirement (품질 보장)
🖥️ 시작하며
HDD를 중점으로 Storage Systems에 대해 설명합니다.
🔍 Secondary Storage
기억장치라고 불리며, 주 메모리 외부의 모든 저장 장치를 의미
- CPU와 직접 소통하지 않음! 주 메모리를 거친다.
- 명령어의 직접 실행을 허용하지 않음
- 데이터의 직접 읽기/쓰기를 허용하지 않음
특성 | 설명 |
크기 | 대용량 (예: 4TB 이상) |
비용 | 저렴함 |
지속성 | 데이터가 전원 손실 시에도 유지됨 |
속도 | 느림 (접근 시간: 밀리초 단위) |
🔍 HDD
📌 Segate HDD 구조
항목 | 스펙 | 참고 |
헤드 수 | 4개 | 헤드가 위 아래 양면으로 존재 |
디스크 수 | 2개 | ㅤ |
최대 기록 밀도 | 1413K BPI (bits per inch) | 1MB/bits |
평균 트랙 밀도 | 236K TPI (tracks per inch) | ㅤ |
평균 면적 밀도 | 329 Gbits/sq.inch | ㅤ |
스핀들 속도 | 7200rpm (8.3ms/rotation) | 진공청소기가 11000rpm |
평균 탐색 시간 (읽기) | < 8.5ms | 팔이 움직이는 시간 |
평균 탐색 시간 (쓰기) | < 9.5ms | 팔이 움직이는 시간 |
최대 내부 데이터 전송 속도 | 1695 Mbits/sec | ㅤ |
최대 I/O 데이터 전송 속도 | 300MB/sec (SATA-2) | 요즘 좋은 SSD는 8GB |
최대 지속 데이터 전송 속도 | 125MB/sec | ㅤ |
내부 캐시 버퍼 | 32MB | ㅤ |
최대 전원-온 준비 시간 | < 10.0 초 | ㅤ |
📌 디스크 관리
- 디스크는 기계적인 장치를 포함하기 때문에 여러 문제가 발생할 수 있음
- 오류 (Errors): 디스크 읽기/쓰기 중 다양한 오류 발생 가능
- 불량 블록 (Bad blocks): 데이터를 저장할 수 없는 손상된 블록
- 탐색 실패 (Missed seeks): 디스크 헤드가 원하는 위치를 정확히 찾지 못함
- 운영체제는 이런 복잡성과 문제를 숨기고 상위 소프트웨어가 디스크의 문제를 직접 다루지 않도록 함
- Low-level device drivers
- Higher-level Abstractions
하드웨어와 상호작용해 디스크 읽기/쓰기 수행
디스크의 복잡성을 추상화 (파일, 데이터베이스 등)
⚙️ 운영체제는 디스크 접근을 하기 위한 여러 수준의 방법을 제공
- 논리 파일 접근 (Logical File Access) - by User Library
- 파일 이름, 블럭 번호, 레코드 번호 혹은 바이트 번호를 통해 파일에 접근
- 디스크 논리 블록 접근 (Disk logical block) - by Filesystem
- 디스크의 논리 블록 번호를 사용해 데이터를 관리하고 저장
- 물리 디스크 블록 접근 (Physical disk block) - Block Layer
- 실제 디스크의 물리적 위치(surface, cylinder, sector)를 사용해 관리
접근 수준 | 제공자 | 설명 | 예시 |
논리 파일 접근 | 사용자 라이브러리 | 파일 이름과 블록 번호, 레코드 번호 또는 바이트 번호를 사용하여 파일에 접근 | fopen() , fread() , fwrite() , fseek() |
디스크 논리 블록 접근 | 파일 시스템 | 논리 블록 번호를 사용하여 파일 시스템이 디스크의 데이터를 관리 | 파일 시스템 ( ext4 , NTFS 등), 논리 블록 배치 |
물리 디스크 블록 접근 | 블록 레이어 | 디스크의 물리적 위치(서페이스, 실린더, 섹터)를 사용하여 데이터 관리 | 디스크 드라이버, 물리적 주소 사용 |
- 디스크 요청을 명시(데이터 읽기/쓰기를 위해 디스크의 특정 위치를 지정)하는 것은 많은 정보를 필요:
- Cylinder #, surface #, track #, sector #, transfer size, etc.
- 옛날에는 운영체제가 모든 매개변수를 지정해야 했음 → 매개변수를 모두 알아야 했음
- 현대 디스크의 복잡성
- 섹터 크기 불균일, 섹터가 재배치, etc.
- 현대 디스크는 고수준의 추상화 인터페이스를 제공
- 예시: SCSI (Small Computer System Interface)
- 디스크는 데이터를 [0..N-1] 범위의 논리적 블록 배열로 내보냄
- 논리적 블록을 실린더/서페이스/트랙/섹터에 매핑
- 읽기/쓰기 위해 논리적 블록 번호만 지정
→ 결과: 운영체제는 물리적 매개변수를 숨김
- 하드웨어가 바뀌면 운영체제 코드도 바뀌어야 함!
📌 Disk Performance
1️⃣ 탐색 (Seek)
- 설명: 디스크 팔을 올바른 실린더로 이동시키는 과정
- 속도: 디스크 팔의 이동 속도에 따라 달라지며, 매우 느림
- 영향 요인: 디스크 팔의 물리적 이동 시간
2️⃣ 회전 (Rotation)
- 설명: 디스크 헤드 아래로 올바른 섹터가 올 때까지 기다리는 과정
- 속도: 디스크의 회전 속도에 따라 달라지며, 느림
- 영향 요인: 디스크의 회전율 (예: 7200 RPM)
3️⃣ 전송 (Transfer)
- 설명: 데이터를 디스크 표면에서 디스크 컨트롤러로 전송하고, 이를 호스트로 보내는 과정
- 속도: 디스크의 바이트 밀도에 따라 달라지며, 상대적으로 빠름
- 영향 요인: 디스크의 데이터 밀도와 인터페이스 속도
단계 | 설명 | 속도 | 영향 요인 |
탐색 (Seek) | 디스크 팔을 올바른 실린더로 이동 | 매우 느림 | 디스크 암의 물리적 이동 시간 |
회전 (Rotation) | 디스크 헤드 아래로 올바른 섹터가 올 때까지 기다림 | 느림 | 디스크의 회전율 (예: 7200 RPM) |
전송 (Transfer) | 데이터를 디스크에서 컨트롤러로 전송하고 호스트로 보냄 | 빠름 | 디스크의 데이터 밀도 및 인터페이스 속도 |
📌 Disk Scheduling
디스크 탐색(Seek)은 비용이 많이 들기 때문에 디스크 스케줄링이 필요
- 디스크가 사용중일 때 읽기/쓰기 작업이 요청될 수 있음
- 대기 중인 모든 작업을 저장하고, 스케줄링을 통해 최적화된 순서로 처리
📌주요 디스크 스케줄링 알고리즘
스케줄링 알고리즘 | 설명 | 장점 | 단점 |
FCFS | 요청 순서대로 처리 | 구현이 간단 | 비효율적인 탐색 시간 |
SSTF | 가장 가까운 트랙의 요청을 먼저 처리 | 탐색 시간 최소화 | 특정 요청의 Starvation 가능성 (양 끝) |
SCAN | 디스크 헤드가 끝에서 끝으로 이동하며 요청 처리 | 고른 처리와 합리적인 탐색 시간 | 끝에서 방향 전환 시 대기 시간 발생 (SSTF도 비슷) |
C-SCAN | 끝에서 끝으로 이동 후 처음으로 돌아가서 요청 처리 | 일정한 대기 시간과 예측 가능한 성능 | 구현 복잡성 증가 |
LOOK | SCAN과 유사하지만, 디스크 암이 요청이 있는 마지막 위치까지만 이동 | 끝까지 가지 않아 불필요한 이동 최소화 | 특정 상황에서 비효율적일 수 있음 |
C-LOOK | C-SCAN과 유사하지만, 디스크 암이 요청이 있는 마지막 위치까지만 이동한 후, 처음으로 돌아감 | 불필요한 이동 최소화, 일정한 대기 시간 | 구현 복잡성 증가 |
💡 요즘은 Disk가 보통 SSD를 쓰기 때문에 디스크 스케줄링을 쓰지 않음, 자체적으로 수행
- 디스크 스케줄링 알고리즘을 선택하는 것은 시스템 성능에 큰 영향을 미침
SSTF
: 가장 무난한 선택, 다음으로는LOOK
SCAN
,C-SCAN
: 디스크에 과부하가 걸리는 시스템에서 좋음- 성능은 디스크 요청의 수와 유형에 따라 달라짐
- 디스크 서비스 요청은 파일 할당 방법에 의해 영향을 받음
📌 Modern Disks
⚙️ Intelligent controllers
- 소형 CPU와 여러 킬로바이트의 메모리 포함
- 컨트롤러 제조업체가 작성한 프로그램 실행
⚙️ Intelligent 기능:
- Read-ahead: 현재 트랙의 데이터를 미리 읽어 성능 향상
- Caching: 자주 사용되는 블록을 캐시 메모리에 저장
- Command Queuing: 여러 명령을 큐에 저장하여 처리
- Request Reordering: 탐색 및 회전 최적화를 위해 요청 재정렬
- Request Retry on Hardware Failure: 하드웨어 오류 발생 시 요청 재시도
- Bad Block/Track Identification: 불량 블록/트랙 식별
- Bad Block/Track Remapping: 불량 블록/트랙을 여분의 블록/트랙으로 재배치
📌 I/O 스케줄러의 역할
1️⃣ Improve Overall Disk Throughput (전반적인 디스크 처리량 향상)
- Merging requests: 요청 수를 줄이기 위해 요청을 병합
- Reordering and sorting requests: 디스크 탐색 시간을 줄이기 위해 요청을 재정렬해서 최적의 탐색 시간 찾음
2️⃣ Prevent Starvation (기아 방지)
- Submit requests before deadline: 요청이 기한 전에 제출되도록 함
3️⃣ Provide Fairness (공정성 제공)
- Ensure fairness: 서로 다른 프로세스 간의 공정성을 제공
4️⃣ Guarantee Quality-of-Service (QoS) Requirement (품질 보장)
- Meet QoS requirements: 품질 보장(QoS) 요구 사항을 충족
댓글