플래터
: 하나 이상의 디스크 집합스핀들
: 모든 플래터를 연결하며 플래터를 회전시킨다.트랙
: 플래터위의 동심원. 한 디스크에 하나 이상의 트랙이 존재한다.실린더
: 여러 개의 플래터에서 같은 위치의 트랙들을 실린더라고 한다.암
: 헤드가 원하는 실린더를 가리킬 수 있게 이동시킨다.R/W헤드
: 플레터에서 데이터를 읽어오거나 쓴다.섹터
: 트랙 내부에 쪼개진 공간으로, 디스크에서 표현할 수 있는 가장 작은 단위이다. 보통 512byte 차지. Header, Data, Trailer로 이루어져 있으며, Header와 Trailer에는 섹터 넘버나 ECC등 부가 정보가 들어가 있다.ECC(Error Correction Code)?
섹터의 데이터에 오류가 발생했는지 감지하고 일정 수준까지 오류를 복구하는 데 사용된다.
읽기 과정에서 계산된 ECC 값과 저장된 ECC 값을 비교하여 데이터 무결성을 검사한다.
OS가 직접 하드디스크에서 R/W를 하지 않는 이유
CPU의 속도와 비교했을 때 디스크에서 R/W하는 작업이 느림. OS가 직접 디스크에서 읽어오려면 CPU는 R/W요청을 보내고 하드 디스크에서 읽어올때까지 기다려야함.
그래서 파일매니저한테 R/W요청 맡기고 다른 프로세스 실행하다가, 인터럽트 발생하면 그 때 디스크에서 읽어온 데이터를 처리한다.
물리적인 단위인 섹터는 논리적인 단위인 Logical Block과 일대일로 매핑된다. Logical Block은 일차원배열로 관리되며 디스크 컨트롤러는 Logical Block을 참조해 원하는 데이터를 읽고 쓴다.
Physical Formatting
: 하드 디스크에서 물리적으로 섹터 단위로 나누는 과정.Partitioning
: 디스크를 하나 이상의 실린더 그룹으로 만드는 과정.그렇게 나눠진 실린더 그룹(파티션)은 독립적인 디스크 공간처럼 사용된다. OS는 이를 논리적인 디스크로 바라본다.Logical formatting
: 실린더 그룹(파티션)에 파일시스템을 생성하는 과정. 파일 시스템은 파일과 디렉토리를 구성하고 관리하는 데 사용되는 구조와 규칙을 정의한다. 이 과정에서 FAT, inode등이 생성.Booting
: 파일시스템에 있는 운영체제를 메모리에 올려 부팅하는 과정. (ROM에 있는 small bootstrap loader → sector0(boot block)에 있는 full boostrap loader → OS를 메모리에 올림)SeekTime
: 헤드를 목표 실린더로 옮기는 데 걸리는 시간 (가장 많은 시간을 소요)Rotational Latency
: 헤드가 원하는 섹터에 도달하기 위해 플래터를 회전하는 시간Transfer Time
: 데이터 읽고 쓰는 시간실린더 할당이 중요!
SeekTime이 가장 오래 소요되므로, 하나의 파일을 저장할 때 트랙1, 트랙2, 트랙3에 각각 저장하는 것보다 각각 다른 플래터의 같은 트랙1에 저장하는 게 더 효율적이다.
디스크 RW속도를 높이려면 SeekTime = SeekDistance를 줄이는 게 핵심.
말해뭐해 들어온 순서대로 디스크에서 찾아서 반환한다~
현재 헤더 위치에서 가장 가까운 요청을 처리.
starvation 확률업!
암을 디스크 끝쪽에서 반대 끝쪽으로 이동시키며, 가는 길에 있는 요청들을 처리.
실린더 위치에 따라 처리 속도가 다름. 맨 끝에 있는 실린더 개손해
암을 디스크 한 쪽에서 반대 끝쪽으로 이동시키며 가는 길에 있는 요청들을 처리. 단, 끝쪽으로 이동하면 곧바로 처음 위치로 이동시킴.
SCAN처럼 실린더 위치에 따라 처리 속도가 달라지지 않음. 대시 처음 위치로 이동할 때 아무것도 처리안하니까 성능은 좀 더 나쁘긴 함.
SCAN과 동일하게 움직이나, 가는 길에 들어온 요청들은 처리하지 않는다. 첫 위치에서 시작하기 전에 들어온 요청들에 대해서만 처리. 이동중에 들어온 요청은 다음 이동 때 처리.
SCAN과 동일하게 움직이나, 요청이 없다면 맨 끝까지 이동하진 않음.
C-SCAN과 동일하게 움직이나, 요청이 없다면 맨 끝까지 이동하진 않음.
스왑
: 사용 가능한 메모리 공간이 작아질 때, 메모리 공간에 있던 프로세스들을 디스크의 스왑 공간으로 잠시 옮기는 방법.
여러 개의 디스크를 묶어서 사용하는 것. 여러 개의 물리적인 디스크를 하나의 논리적인 단위로 결합한다.
이거 왜 하나요?
데이터를 여러 디스크에 분산
저장하여 높은 읽기/쓰기 성능
을 제공한다.
데이터를 여러 디스크에 중복적으로 저장
한다. 한 디스크가 망가져도 다른 디스크에서 참조할 수 있다.
쓰기 성능은 단일 디스크와 유사하지만, 읽기 성능은 병렬 처리로 향상가능.
데이터와 패리티 정보를 여러 디스크에 분산 저장.
한 디스크에 장애가 발생해도 패리티 정보를 이용하여 데이터를 복구
할 수 있다.
읽기 성능은 우수하지만, 쓰기 성능은 패리티 계산으로 인해 저하될 수 있다.
데이터를 미러링하고 스트라이핑하여 높은 성능과 데이터 보호 기능
을 동시에 제공한다.
비용이 높지만, 가장 안정적이고 고성능인 RAID 구성.