사용자가 데이터를 효율적으로 저장, 접근, 관리할 수 있도록 해주는 핵심 메커니즘이자,
보조 기억 장치(하드 디스크, SSD 등)의 물리적인 공간을 논리적인 파일과 디렉토리 형태로 추상화해주는 체계
| 구조 | 특징 | 장점 | 단점 |
|---|---|---|---|
| 1단계 (Single-Level) | 시스템 내 파일이 하나의 디렉터리에만 존재함 | 구현이 가장 단순함 | 파일 이름 충돌 발생 쉬움. 파일 관리 어려움 |
| 2단계 (Two-Level) | 사용자별 UFD를 두고 MFD가 관리함 | 사용자 간 이름 충돌 해소됨. 사용자별 파일 구분이 명확함 | 사용자 간 파일 공유 및 파일 그룹화 어려움 |
| 트리 구조 (Tree Structure) | 루트를 정점으로 하는 계층적 다단계 구조임 | 파일의 논리적 그룹화 용이함. 절대/상대 경로 접근 가능함 | 탐색 시 시간 오버헤드 발생 가능함. 파일 공유가 간접적임 |
| 그래프 구조 (Acyclic-Graph) | 트리 구조에 링크를 추가하여 파일 공유를 허용함 | 파일 및 디렉터리 공유가 가능하여 효율성 높음 | 순환(Cycle) 처리 복잡함. 삭제 시 댕글링 포인터 문제 발생함 |
파일 시스템은 파일의 논리적인 블록을 디스크의 물리적인 블록에 어떻게 대응시켜 저장할지를 결정함
연속 할당(Contiguous Allocation)
파일의 모든 데이터 블록을 디스크의 연속된 물리적 블록에 저장함
[+] 순차 접근 및 직접 접근이 매우 빠르고, 구현이 단순함
[-] 파일 크기 변경이 어렵고, 외부 단편화 문제가 심각하게 발생함
연결 할당(Linked Allocation)
파일의 각 데이터 블록을 디스크에 흩어져 저장됨
각 블록은 다음 블록의 주소를 포인터 형태로 저장하여 연결함
[+] 외부 단편화가 발생하지 않고, 파일 크기 변경이 용이함
[-] 직접 접근이 불가능하고 순차 접근만 가능하며, 포인터 저장 공간으로 인한 낭비가 발생하고, 포인터 손상 시 데이터 접근이 끊어지는 신뢰성 문제
인덱스 할당(Indexed Allocation)
파일의 모든 디스크 블록 주소를 모아놓은 인덱스 블록을 사용함
파일 접근 시 인덱스 블록을 먼저 참조하여 데이터의 위치를 파악함
[+] 직접 접근이 가능하고, 외부 단편화가 없음
[-] 인덱스 블록을 위한 추가적인 공간이 필요하며, 대용량 파일의 경우 인덱스 블록을 관리하는 것이 복잡해짐