
파일 시스템이란 파일과 디렉터리를 관리하는 운영체제 내부의 시스템이다.
파일과 디렉터리는 보조기억장치에 저장된 데이터 덩어리로 볼 수 있다.
파일은 보조기억장치에 저장된, 의미 있고 관련된 정보의 집합이다.
파일에는 실행을 위한 정보 외에도 속성(attribute) 과 메타데이터 등의 부가 정보가 포함된다.

파일을 다루기 위해서는 반드시 운영체제를 거쳐야 한다.
파일 생성, 삭제, 열기/닫기, 읽기, 쓰기 등 다양한 시스템 호출(System Call) 이 존재한다.
| 용어 | 설명 |
|---|---|
| 루트 디렉터리 | 최상위 디렉터리. / 로 표현한다. |
| 서브 디렉터리 | 루트 디렉터리 아래에 있는 디렉터리 |
| 절대 경로 | 루트 디렉터리(/)부터 시작하는 경로 |
| 상대 경로 | 현재 디렉터리(.)부터 시작하는 경로 |
예시 — g.jpg 파일의 경우:
/home/guest/g.jpgguest/g.jpg (현재 위치가 /home인 경우)운영체제는 디렉터리를 다루는 다양한 시스템 호출도 제공한다.
많은 운영체제에서 디렉터리는 특별한 형태의 파일로 간주된다.
디렉터리 내부에는 해당 디렉터리에 속한 파일/서브 디렉터리의 정보가 테이블 형태로 저장된다.
디렉터리 테이블에 공통적으로 포함되는 정보:
새로운 하드디스크나 SSD를 곧바로 사용하는 것은 불가능하다.
파일을 저장하기 전에 반드시 파티셔닝과 포매팅 과정이 필요하다.
| 작업 | 설명 |
|---|---|
| 파티셔닝 (Partitioning) | 저장 장치를 논리적 영역으로 구획하는 작업 |
| 포매팅 (Formatting) | 파일 시스템을 설정하는 작업. 어떤 방식으로 파일을 저장·관리할지 결정하고, 새 데이터를 쓸 준비를 한다. |
포매팅이 완료된 저장 장치에는 파일을 저장할 수 있다.
운영체제는 파일과 디렉터리를 블록(Block) 단위로 읽고 쓴다.
하나의 파일은 여러 블록에 걸쳐 저장되며, 할당 방식은 크게 두 가지로 나뉜다.
파일 할당 방법
├── 연속 할당
└── 불연속 할당
├── 연결 할당
└── 색인 할당
보조기억장치 내 연속적인 블록에 파일을 할당하는 방법이다.
파일 D, F가 삭제된 상황을 가정하면, 남은 블록이 11개더라도 연속된 공간이 부족해 7개 이상의 블록을 필요로 하는 파일은 저장할 수 없다.
외부 단편화를 해결하기 위해 파일을 여러 블록에 흩어서 저장하는 방식이다.
각 블록의 일부에 다음 블록의 주소를 저장하여, 블록들이 연결 리스트(Linked List) 형태로 구성된다.
단점:
파일의 모든 블록 주소를 색인 블록(Index Block) 이라는 하나의 블록에 모아 관리하는 방식이다.
연결 할당 기반의 파일 시스템으로, 연결 할당의 단점을 보완한 방식이다.
연결 할당의 근본적인 문제는 각 블록 안에 다음 블록의 주소가 분산되어 있다는 것이다.
FAT는 이 주소들을 하나의 테이블(File Allocation Table) 로 모아 관리한다.
FAT 파일 시스템의 디렉터리 엔트리에는 파일의 속성 정보도 함께 저장된다.
a.sh 파일을 읽는 과정:
1. FAT 테이블에서 a.sh의 시작 블록 확인 (예: 3번 블록)
2. FAT 테이블을 따라 순서대로 블록 확인: 3번 → 15번 → 9번
3. 실제 데이터 블록 접근: 9번 → 8번 → 11번 → 13번
색인 할당 기반의 파일 시스템이다.
색인 블록을 i-node(Index Node) 라고 부르며, 파일의 속성 정보와 최대 15개의 블록 주소를 저장할 수 있다.
15개가 넘는 블록이 필요한 대용량 파일을 처리하기 위해 다단계 간접 블록 방식을 사용한다.
| 주소 번호 | 방식 | 설명 |
|---|---|---|
| 1 ~ 12번 | 직접 블록 | 실제 데이터 블록의 주소를 직접 저장 |
| 13번 | 단일 간접 블록 | 데이터 주소 목록을 담은 블록의 주소를 저장 |
| 14번 | 이중 간접 블록 | 단일 간접 블록의 주소 목록을 담은 블록의 주소를 저장 |
| 15번 | 삼중 간접 블록 | 이중 간접 블록의 주소 목록을 담은 블록의 주소를 저장 |
유닉스 파일 시스템에서는 i-node가 핵심이다.
디렉터리 엔트리에는 i-node 번호와 파일 이름이 저장된다.
a.sh 파일을 읽는 과정:
home 디렉터리의 i-node 번호(i-node 3) 확인 → 210번 블록에 저장됨을 확인guest 디렉터리의 i-node 번호(i-node 8) 확인 → 121번 블록에 저장됨을 확인a.sh의 i-node 번호(i-node 9) 확인| 파일 시스템 | 기반 방식 | 핵심 자료구조 |
|---|---|---|
| FAT | 연결 할당 | File Allocation Table |
| Unix FS | 색인 할당 | i-node |