하드 디스크 드라이브
Platters : 데이터 저장 장소
Slider(and Head) : 읽거나 쓰는 용도
Spindle : 모터에 의해 돌아감 (Platter를 돌리기 위한 용도)
SCSI Interface Connector : 데이터 이동 통로
하드 디스크 드라이브의 도식적 설명
Boom : 읽기/쓰기 헤드를 지탱하는 암
Platters : 데이터가 저장되는 원형 디스크 표면
Spindle : 디스크를 회전시키는 모터
디스크 표면에 있는 트랙과 섹터
트랙 : 디스크 표면에 원형으로 형성된 데이터 기록 경로
(트랙의 바깥면과 안쪽면의 용량은 동일)
섹터 : 데이터 저장의 가장 작은 단위로 보통 512 바이트
실린더(cylinder)
cylinder : 각 트랙을 모아놓은 집합
-> 디스크 용량이 커지려면 cylinder의 개수가 많아져야 함.
저장 용량과 공간 필요량 추정
디스크 저장 용량 :
- 디스크의 용량을 계산하려면 디스크의 전체 저장 공간을 구해야함
- 디스크의 용량은 각 섹터, 트랙, 실린더에 포함된 데이터의 양을 곱하여 구할 수 잇음
파일에 저장된 실린더 수 계산 :
- 파일 크기 계산
-> 파일 크기 = 레코드의 수 * 레코드의 크기 = 50,000 * 256 바이트
- 실린더 용량 계산 :
- 실린더당 저장할 수 있는 용량은 트랙당 섹터 수와 섹터당 바이트 수를 곱한 값
파일에 저장된 실린더 수 = 파일 크기 / 실린더 용량
섹터별 트랙 구성 (Organizing Tracks by Sector)
1. Sectors
- 정의: 디스크에서 고정 크기를 가지며 가장 작은 주소 지정 단위.
- 구성: 디스크의 트랙을 구성합니다.
- 레코드 구성 방식: 섹터 내 데이터를 구성하는 두 가지 방법:
- 하나의 레코드만 저장: 시간 효율성을 위해 한 섹터에 하나의 레코드를 저장.
- 레코드가 섹터를 넘어서 저장: 저장 효율성을 위해 여러 레코드가 섹터를 넘어서 저장될 수 있음.
2. Clusters
- 정의: 연속된 섹터의 고정된 수.
- 파일 할당 단위: 파일에 할당할 수 있는 가장 작은 공간 단위.
- 클러스터 크기: 큰 클러스터를 사용하면 더 많은 섹터를 한 번에 읽을 수 있어 디스크 탐색을 줄일 수 있습니다.
- 내부 단편화: 클러스터가 커지면 내부 단편화가 발생할 수 있음. 사용하지 않는 공간이 클러스터 내에 남을 수 있기 때문입니다.
3. Extents
- 정의: 인접한 클러스터가 하나의 파일의 일부 또는 전부로 할당된 것.
- 비연속적 파일: 파일을 저장할 때 연속된 공간이 부족하면, 파일은 두 개 이상의 비연속적인 부분으로 나누어 저장됩니다. 이 비연속적인 각 부분을 **확장성(Extent)**이라고 부릅니다.
섹터의 물리적 배치
Interleaving sectors (섹터 인터리빙)
- 디스크에서 데이터를 읽을 때, 데이터를 읽은 후 디스크 컨트롤러가 데이터를 처리할 시간을 고려해 섹터를 인터리빙하여 효율성을 높임
interleaving 이란 ?
- 디스크의 성능을 최적화하기 위한 기술
- 디스크에서 데이터를 읽을 때 발생하는 지연 시간을 최소화힉 위해 섹터를 일정한 간격으로 배치하는 방식
- 다음 데이터를 읽기 전에 잠시 기다려야 하는 경우를 고려해서 데이터를 일정 간격으로 배치함
interleaving factor ?
- 인터리빙 계수 1은 섹터 간 간격 없이 연속적으로 데이터를 읽는 방식
- 인터리빙 계수 5는 1번 섹터를 읽고, 2번부터 5번 섹터는 건너뛰고, 6번 섹터를 읽는 방식
Clusters (클러스터)
파일을 클러스터 단위로 보기
- 파일은 여러 클러스터로 구성
- 파일 할당 테이블 (FAT) 를 사용하여 논리적 섹터를 물리적 클러스터에 연결
- cluster = 16 sectors (8KB)
Extents (확장성)
확장성
- 파일이 커져서 필요한 클러스터가 연속되지 않으면, 파일 관리자는 비연속적인 공간을 할당하게 되며, 이 공간은 확장성 이라고 한다.
- extents가 작을수록 좋다.
- (b)처럼 저장하면 (a)보다 seek, rotation 비용이 더 든다. (transfer 비용은 동일)
- (a)처럼 연속적으로 할당하면 읽기, 쓰기를 빠르게 수
Fragmentation (단편화)
단편화
- 섹터 내 또는 섹터 간 레코드가 비효율적으로 저장될 경우 발생
- 최적화되지 않은 데이터 저장 방식으로 비효율적인 공간이 초래할 수 있음
- 인터리빙 계수가 낮을수록 단편화가 적음 ((a)가 단편화가 적음)
- 단편화 관점에서는 (a) 방식이 더 적합 / 디스크 성능 최적화에는 (b)방식이 적합
- (a)는 데이터가 연속적으로 저장 / (b)는 데이터가 연속적이지 않게 배치
디스크 접근 비용
- 탐색 시간(Seek Time)
- 읽기/쓰기 헤드가 원하는 실린더로 이동하는 시간.
- 평균적으로 전체 실린더의 1/3을 이동하는 시간이 소요됨.
- 회전 지연 시간(Rotational Delay)
- 디스크가 회전하여 원하는 섹터가 헤드 아래에 도달하는 시간.
- 일반적인 HDD는 **5,000 RPM(분당 회전 수)**으로 회전하며, 평균 회전 지연 시간은 약 6ms.
- 데이터 전송 시간(Transfer Time)
- 데이터를 디스크에서 읽어 RAM으로 전송하는 시간.
=> 평균적으로 seek 비용이 압도적으로 크다
디스크 접근 순서
1. Head를 데이터가 있는 곳으로 이동 (seek)
2. rotation (데이터의 첫 byte를 헤더 아래로 가게 위치시킴)
3. transfer (읽기 or 쓰기 작업)
📌 예제: 8,704KB 크기의 파일 읽기 시간 계산
- 파일이 34,000개의 256바이트 레코드로 구성됨.
- 평균 탐색 시간 = 8ms, 평균 회전 지연 = 3ms, 트랙 전송 시간 = 6ms
- 총 트랙 수 = 100 → → 100 × (8 + 3 + 6) ms = 1.7초
📌 무작위 접근 방식(random access)으로 읽을 경우
- 클러스터 단위(8섹터)로 읽을 경우 전송 시간: 0.28ms
- 전체 소요 시간: 383.52초 (약 6.4분) → 순차 접근이 무작위 접근보다 훨씬 빠름.
파일 저장 과정 및 운영체제의 역할
I/O 프로세서와 디스크 컨트롤러
📌 (1) 파일 저장 과정 (A Journey of a Byte)
- 사용자 프로그램이 운영체제(OS)에 데이터를 저장 요청.
- *파일 매니저(File Manager)**가 파일의 위치를 확인.
- I/O 프로세서가 적절한 시간에 데이터를 디스크로 전송할 준비.
- 디스크 컨트롤러가 헤드를 이동하고 데이터를 디스크에 기록.
📌 파일 저장 과정 예제
- 사용자가 'P'라는 문자를 저장하면:
- OS가 'P'를 찾고, 파일을 열어 저장할 공간을 확인.
- 'P'를 버퍼에 저장 후 I/O 프로세서에게 전송.
- I/O 프로세서가 'P'를 디스크에 저장.
파일 관리자 (The File Manager)
1. 프로그램 요청 :
- 프로그램은 운영 체제에 변수 c의 내용을 TEXT 파일의 다음 사용한 위치에 쓰도록 요청
- 여기서 TEXT 는 프로그램 내에서 참조되는 파일의 이름
2. 운영 체제의 작업 전달 :
- 운영 체제는 해당 작업을 파일 관리자에게 전달
3. 파일 관리자 :
- 파일 관리자는 먼저 TEXT 파일에 대한 정보를 저장한 테이블을 조회
- 여기에는 파일 OPEN여부, 쓰기모드인지, access 타입이 어떻게 되어있는지 등을 포함
- FAT Table을 검색하여, 해당 바이터가 저장될 섹터의 물리적 위치를 찾음 (몇 번 cluster에 있는지 확인 가능)
- 파일의 마지막 섹터가 이미 시스템 I/O 버퍼에 저장되었는지 확인하고, 변수 P를 해당 섹터의 위치로 버퍼에 기록
- 그런 다음, I/O 프로세서에게 버퍼에서의 위치와 디스크로 보낼 위치를 지시
4. I/O 프로세서 :
- 디스크가 데이터를 받을 수 잇는 시간을 찾고, 이를 적절한 형식으로 변환하여 디스크로 보냄
- 데이터를 디스크에 보낼 때 절절한 chunk 크기로 버퍼링할 수 있음
- 이후, 데이터를 디스크 컨트롤러로 전송
-> I/O 프로세서를 거쳐가는 이유는 user response time 을 줄이기 위해서
5. 디스크 컨트롤러
- 읽기/쓰기 헤드를 적절한 트랙으로 이동
- 원하는 섹터가 읽기/쓰기 헤드 아래에 올 때까지 기다린 후, 데이터를 디스크로 전송하여 비트 단위로 기
정리:
- 프로그램이 데이터를 쓰려고 하면, 운영 체제가 파일 관리자에게 작업을 전달합니다.
- 파일 관리자는 해당 파일의 물리적 위치를 찾고, 데이터를 I/O 프로세서와 디스크 컨트롤러를 통해 실제 디스크에 기록합니다.
- 디스크 컨트롤러는 헤드를 제어하여 데이터를 물리적으로 디스크에 기록하는 역할을 합니다.
'파일처리' 카테고리의 다른 글
파처 ch5) Managing Files of Records (0) | 2025.04.15 |
---|---|
파처 ch4) Fundamental File Structure Concepts (0) | 2025.04.10 |
파일처리 ch4) Flash memory overview and Hybrid Mapping (0) | 2025.03.25 |
파일처리 ch2) 파일처리 기본 연산에 대한 소개 (0) | 2025.03.23 |
파일처리 ch1) 파일 구조 설계와 명세 소개 (1) | 2025.03.23 |