저장 장치
1) 저장 장치
#1 저장 장치 목적
- 프로그램과 데이터를 보조적으로 저장
- 하드 디스크, SSD, CD 등
#2 저장 장치의 특성
- GB에서 TB 크기의 대용량 장치
- 비휘발성 영구 기역 장치
- 가상 메모리의 스왑 공간
2) 저장 장치 성능과 신뢰성
- 저장 장치가 컴퓨터 성능과 신뢰성에 영향을 줌
#1 입출력 병목 문제
- 저장 장치의 성능에 따라 발생 가능
- 저장 장치의 속도가 cpu 처리 속도에 비해 매우 느려 많은 입출력 요청 시 발생
- 입출력 병목 현상으로 cpu 유휴 시간이 늘고 시스템전체를 느려지게 함
- 줄이기 위한 방법으로 빠른 저장 장치 사용 및 디스크 캐시 증가, 메모리 크기 증가, 디스크 스케줄링 사용
#2 데이터 신뢰성
- 저장 장치의 고장은 데이터 손실을 가져옴
- 데이터 신뢰성을 높이는 방법
→ 디스크 미러링 ( 동일한 디스크를 사용하여 항상 동일한 데이터가 기록되도록 구현 ) - RAID 1 로 불림
→ RAID ( 여러 개의 값싼 디스크를 병렬로 연결하여 사용하는 방법 ) - 디스크에 블록을 순서대로 돌아가면서 배치, 디스크가 고장나는 경우 고장난 디스크의 블록들을 패러티 연산을 통해 복구
하드 디스크 장치
1) 디스크 장치
- 디스크 제어 모듈과 매체 모듈로 구성
- 제어 모듈은 호스트로부터 명령을 받아 매체 모듈을 제어
- 매체 모듈은 디스크 헤드를 움직여 물리적인 입출력 시행
2) 존 비트 레코딩
- 전통적인 디스크 ( 안쪽 트랙이나 바깥쪽 트랙에 상관없이 트랙 당 섹터 수 동일한 포맷 사용 )
→ 바깥쪽 트랙일수록 저장 밀도가 낮음 → 저장 공간 낭비
- 존 비트 레코딩
→ 바깥쪽 존에 트랙당 섹터수를 더 많게 포맷 → 저장 공간 확대와 입출력 속도 향상
→ 오늘날 대부분의 디스크에서 사용
3) 디스크 입출력 과정 및 성능 파라미터
- 디스크 입출력 명령의 일반적인 구성 ( 읽기 / 쓰기, 논리블록번호, 호스트의 메모리 주소 )
- 디스크 입출력 명령 처리 과정
→ 프로세서가 논리 블록 번호를 CHS 물리 주소로 변환 → 장치 제어 및 입출력 시행
#1 탐색
디스크 헤드를 목표 실린더로 이동
#2 회전 지연
플래터가 회전하여, 헤드 밑에 목표 섹터가 도달할 때까지 대기
#3 전송
디스크 헤드와 호스트 사이의 데이터 전송
#4 오버헤드
디스크 프로세서가 호스트에서 명령을 받고 해석하는 등의 부가 과정
4) 탐색
- 디스크 장치 내 모터를 이용하여 디스크 헤드가 현재 실린더에서 목표 실린더로 이동하는 과정
- 탐색 거리 : 이동하는 실린던 개수
- 탐색 시간 : 전체적으로 탐색 거리에 선형적으로 비례하나 탐색 거리가 매우 짧은 경우 탐색 시간이 많이 걸림
5) 회전 지연
- 탐색 후 플래터가 회전하여, 헤드 밑에 목표 섹터가 도달할 때 까지 기다리데 걸리는 시간
- 디스크 회전 시간의 1/2 = 평균 회전 지연 시간
6) 전송과 오버헤드
- 디스크 전송은 내부 전송과 외부 전송으로 구분
- 디스크 제조업체가 공개하는 디스크 전송률은 내부 전송 속도
- 내부 전송 시간이 외부 전송 시간보다 큼
- 내부 전송 시간
- 플래터 표면과 디스크 캐시 사이의 데이터 전송
- 디스크 회전 속도에 의해 결정
- 외부 전송 시간
- 디스크 캐시와 호스트 컴퓨터 상이에 데이터가 전송되는 시간
- 호스트 컴퓨터와 연결되는 I/O 버스 속도에 의해 결정
- 오버헤드 시간
- 디스크 장치가 호스트로부터 명령을 받고 해석하거나 헤드에서 다른 헤드로 변경하는 시간 등
- 매우 작은 시간이므로 일반적으로 디스크 입출력에서 배제
7) 디스크 액세스 시간과 디스크 입출력 시간
- 디스크 액세스 시간 : 목표 섹터에 접근하여 읽거나 쓰기까지 걸리는 시간
→ 탐색 시간 + 회전 지연 시간 + 내부 전송 시간
- 입출력 응답 시간 : 호스트나 응용프로그램 입장에서 디스크 입출력에 걸리는 전체 시간
→ 탐색 시간 + 회전 지연 시간 + 전체 전송 시간 + 오버헤드 시간
디스크 스케줄링 알고리즘
1) 디스크 큐와 디스크 스케줄링
- 디스크 큐 : 도착하는 여러 디스크 입출력 요청을 저장하는 큐
- 디스크 스케줄링
- 큐에 저장된 입출력 요청들의 목표 실린더 위치를 고려하여 평균 탐색 거리를 최소화하고
- 평균 디스크 탐색 시간과 평균 디스크 액세스 시간을 줄여 디스크 처리율 극대화
2) 디스크 스케줄링 알고리즘 종류
- FCFS (First Come First Served)
- SSTF
- SCAN
- C-SCAN
- LOOK
- C-LOOK
3) FCFS (First Come First Served)
- 디스크 큐에 도착한 순서대로 처리
- 성능은 좋지 않으나 디스크 큐를 검색할 필요없어 구현이 쉽고 기아가 없음
4) SSTF (Shortest Seek Time First)
- 현재 디스크 헤드가 있는 실린더에서 가장 가까운 요청 선택
- 성능은 매우 우수하나 디스크 헤드에서 멀리있는 요청에 대해 기아 발생 가능
- 응답 편차가 큼
5) SCAN
- 맨 바깥쪽 실린더의 요청에서 시작하여 안쪽 실린더로 요청을 처리한 후 안쪽 끝까지 이동 → 다시 바깥쪽 방향으로 요청을 처리하면서 끝 실린더까지 이동
- SSTF보다 균등한 서비스
- 양쪽 끝 실린더의 요청들이 선택될 확률이 중간에 위치한 요청보다 낮음
6) LOOK
- SCAN 단점 보완 - 요청이 없어도 끝 실린더까지 이동
- 현재 이동 방향에 더 이상 요청이 없는 경우 즉시 이동 방향 변경
7) C-SCAN
- SCAN 단점 보완 - 중간 실린더의 요청이 더 높은 확률로 서비스
- 한 방향으로만 이동하면서 요청 처리 ( 바깥쪽에서 안쪽으로 할 경우 끝 실린더 도착시 다시 맨 바깥쪽 실린더로 이동 후 요청 처리 ) - 더 균일한 서비스
8) C-LOOK
- LOOK과 C-SCAN의 결합
- 한 방향으로만 서비스
- 이동방향에 요청이 없을 경우 이동 방향 수정 ( 다시 끝 실린더로 이동하여 끝 실린더에서 가까운 요청 실행 )
디스크 포맷
1) 포맷팅
- 디스크 포맷팅
- 저수준 포맷팅 - 플래터에 트랙과 섹터 구분 정보 기록
- 고수준 포맷팅 - 파티션 및 파일 시스템 구축, 부팅 코드 탑재
2) 저수준 포맷팅
- 512바이트 포맷 - 전통적인 포맷, 현재도 사용
- GAP : 다음 섹터를 읽기 전 디스크 회전 동안 디스크 헤드의 준비시간
- SYNCH : GAP의 끝을 나타내는 약속된 코드
- Address Mark : 섹터 물리 주소 기록
- ECC : 손상된 섹터 데이터의 복구나 교정을 위해 추가 기록된 정보
- 4K 포맷 - 오늘날 많은 제조업체들이 출시
- 8개의 섹터를 한 섹터로 만든 고급 포맷
- 저장 효율 상승
- 오류 수정 능력향상
- 디스크 입출력 성능 향상
3) 고수준 포맷팅
- 저수준 포맷팅된 하드 디스크를 여러 개의 파티션으로 나누고 각 파티션에 파일 시스템을 구축하는 과정
- 운영체제를 설치하거나 새 파티션을 만드는 과정에서 사용
- MBR 포맷
- 전통적인 방법
- 부트 섹터 (512바이트) - 부트 로더, 파티션 테이블, 매직 번호 존재
- 파티션 크기가 2TB로 제한, 부팅 속도가 느린 단점
- GPT 포맷
- MBR의 문제점을 개선한 포맷
- UEFI 펌웨어를 가진 컴퓨터에서만 사용 → 대부분의 컴퓨터서 사용
- 첫 번째 섹터에 ‘보호 MBR’ 기록 → MBR 포맷만 지원하는 소프트웨어에게 GPT 포맷 디스크를 훼손시키지 않도록
- 진짜 파티션 테이블은 GPT 헤더 다음 구성
- GPT 헤더와 파티션 테이블 이중화 → 높은 신뢰도
SSD 저장 장치
1) SSD 특징
- 플래시 메모리를 저장소로 하는 비휘발성 기억 장치
- 메모리 계층 구조의 최하위 단에 위치하는 보조 기억 장치
- 순수한 반도체 기억 장치로 모터나 헤드 등 기계 부품 없으며 디스크보다 5배~50배 빠름
2) SSD 구조와 인터페이스
- 플래시 메모리 : SSD 내부의 저장소, 플래시 제어기에 의해 입출력
- DRAM 캐시 : 읽고 쓸 데이터의 임시 저장소
- 호스트 인터페이스 : SATA, SAS, PCIe
- SSD 제어기 : 가장 중요한 부분, 제조업체의 경쟁력
3) SSD 메모리의 논리 구조
- SSD 플래시 메모리 : 여러 페이지의 묶음으로 구성된 블록들로 구성
- 플래시 변환 계층
- 하드 디스크를 기반으로 하는 운영체제의 파일 시스템은 디스크를 섹터 단위로 인식 → 따라서 SSD의 페이지와 블록 단위로 구성으로는 읽고 쓸 수 없음 → 플래시 변환 계층 소프트웨어를 통해 SSD 물리적 특성을 운영체제로부터 숨김
3) SSD 입출력 동작
- 페이지 읽기 - 단순 읽기
- 페이지 쓰기 - 페이지 단위로 이루어지며, 어떠한 경우에도 빈 페이지에만 작성
- 기록된 페이지 수정 : 페이지 전체 읽기 → 페이지 수정 → 새로운 빈 페이지를 찾고 수정된 페이지를 새 페이지에 기록 → 이전 페이지를 dirty 또는 stale로 표시
- 페이지 수정 시 다른 페이지에 다시 쓰기를 하는 이유 : 플래시 메모리는 쓰기나 지우기가 반복되는 블록은 빠른 수명 단축 → 여러 페이지로 쓰기를 분산시킬 필요가 있음
4) 가비지 컬렉션
- 가비지 컬렉션 : 블록 내 빈 페이지가 없게 될 때, 블록 내 dirty 페이지들을 제거하여 할당할 페이지들을 만드는 과정
- SSD 제어기에 의해 수행
→ 데이터가 저장된 페이지들을 다른 블록의 빈 페이지로 복사 → 원본 블록 지우기 → 완전한 할당 가능 블록 생성
5) 웨어 레벨링 / SSD의 용도
- 플래시 메모리의 수명은 쓰기나 지우기 횟수에 비례하여 닳아감
- 웨어 레벨링 ( 균등 쓰기 분배 ) : 플래시 메모리의 모든 블록에 쓰기를 균들 분배 → 특정 블록에 과도한 쓰기를 막아 고장이나 데이터 손실을 예방
- SSD 용도는 이러한 특성에 따라 백업 저장 장치에는 적합하지 않음
→ NAND 플래시는 전원이 공급되지 않은 채 오랜 기간이 지나면 전자가 누출되어 저장된 데이터가 지워지게됨
- 읽기가 많은 운영체제 코드나 프로그램에 적합
- 쓰기나 수정 작업이 많은 스왑영역이나 많은 파일이 임시로 생성되었다가 지워지는 임시 파일 시스템에는 적합하지 않음
'Computer Science > Operating System' 카테고리의 다른 글
[운영체제] 파일 시스템 관리 (0) | 2023.07.25 |
---|---|
[운영체제] 가상 메모리 (0) | 2023.07.24 |
[운영체제] 페이징 메모리 관리 (0) | 2023.07.23 |
[운영체제] 메모리 관리 (0) | 2023.07.22 |
[운영체제] 교착상태 (0) | 2023.07.17 |