
💡 1분 핵심 요약 (TL;DR)
- ✅ 파일 시스템 — 파일 관리자가 파일 테이블로 저장장치 전체를 관리. 사용자는 파일에 직접 접근 불가, 파일 디스크립터(접근 권한)를 통해서만 접근
- ✅ 파일·디렉터리 — 모든 파일은 실행 파일 또는 데이터 파일. 디렉터리는 1단계→트리→비순환그래프 구조로 발전. 절대 경로·상대 경로로 위치 표현
- ✅ 파일 할당 — 연속 할당(이론적, 실제 미사용) vs 불연속 할당(연결 할당·인덱스 할당). 내부 단편화 관리를 위해 빈 공간 리스트 유지
01 파일 시스템의 개요와 기능
파일 관리자가 저장장치를 대신 관리하는 이유
📖 파일 시스템(File System)이란
사용자가 직접 파일을 보관하거나 접근하면 다른 사용자의 파일을 훼손하거나 저장장치를 어지럽힐 수 있습니다. 운영체제는 이를 막기 위해 파일 관리자를 두어 저장장치의 전체 관리를 맡기는데, 이것이 바로 파일 시스템입니다. 파일 관리자는 파일 테이블을 사용해 파일의 생성·수정·삭제를 수행합니다.
✓ 파일 디스크립터(File Descriptor)
사용자가 특정 파일에 접근하려면 파일 관리자로부터 파일에 접근할 수 있는 권한(키)을 먼저 획득해야 합니다. 이 파일 접근 권한을 파일 디스크립터라고 합니다. 윈도우의 경우 FAT나 NTFS 같은 파일 테이블을 유지합니다.
파일 시스템의 7가지 기능
| 기능 | 설명 |
| 파일 구성 | 사용자의 요구에 따라 파일과 디렉터리를 생성 |
| 파일 관리 | 파일 생성·수정·삭제 등의 관리 + 수시로 조각 모음을 하여 빠른 접근 지원 |
| 접근 권한 관리 | 다른 사용자로부터 파일을 보호하기 위해 접근 권한 관리 |
| 접근 방법 제공 | 파일을 읽고, 쓰고, 실행할 수 있도록 사용자에게 접근 방법 제공 |
| 무결성 보장 | 파일의 내용이 손상되지 않도록 무결성을 보장 |
| 백업과 복구 | 사고로부터 파일을 보호하기 위해 백업과 복구 작업을 함 |
| 암호화 | 파일을 암호화하여 악의적인 접근으로부터 파일을 보호 |
블록과 파일 테이블
데이터는 운영체제와 저장장치 간에 블록 단위로 전송됩니다. 블록은 저장장치에서 사용하는 가장 작은 단위로, 한 블록에 주소 하나가 할당됩니다. 메모리는 바이트 단위로 저장되고, 하드디스크의 물리적인 최소 저장 단위는 섹터입니다. 파일 관리자는 여러 섹터를 묶어 하나의 블록으로 만들고 블록 하나에 주소 하나를 배정합니다.

02 파일 분류·확장자·속성
파일은 어떻게 나뉘고, 어떤 정보를 갖고 있을까
모든 파일은 0과 1의 비트 패턴으로 이루어지며, 운영체제 입장에서는 크게 두 종류로 나뉩니다.
| 실행 파일 · 운영체제가 메모리로 가져와 CPU로 작업하는 파일 · 사용자의 요청으로 프로세스가 되는 파일 · 더블클릭 시 프로세스 생성 |
데이터 파일 · 실행 파일이 작업하는 데 필요한 데이터를 모아 놓은 파일 · 이미지·음악·문서 파일 등 · 더블클릭 시 연결 프로그램이 실행 |
✓ 파일 이름과 확장자 규칙
파일 이름은 '파일이름.확장자' 형태로 구성됩니다. 마침표를 여러 번 쓸 경우 마지막 마침표 다음 글자를 확장자로 인식합니다. 파일 이름에는 영문자·숫자·붙임표(-)·밑줄(_)·마침표(.)를 주로 쓰며, 경로 이름을 포함하여 최대 255자까지 허용됩니다. 확장자를 바꾼다고 해서 파일 내용이 바뀌지 않는다는 점도 기억해두세요.
파일 속성의 종류
| 속성 (영문) | 설명 |
| name | 파일의 이름 |
| type | 파일의 종류 |
| size | 파일의 크기 |
| time | 파일의 접근 시간 |
| location | 파일의 위치 |
| accessibility | 파일의 접근 권한 |
| owner | 파일의 소유자 |
이 속성들은 파일 헤더에 저장되어 파일 테이블에서 관리됩니다. 데이터 파일에는 응용 프로그램이 필요로 하는 고유 헤더가 추가로 달려 있습니다.
📖 전공 용어 — FCB와 i-node
운영체제 전공 시험에서는 파일 속성(메타데이터) 정보가 담긴 이 구역을 FCB(File Control Block, 파일 제어 블록)라고 부릅니다. 유닉스·리눅스 시스템에서는 이를 i-node(인덱스 노드, inode)라는 이름으로 관리합니다. FCB와 i-node는 시험·면접에서 자주 등장하는 정식 명칭이므로 꼭 기억해두세요.
03 디렉터리의 개요와 경로
관련 파일을 모아 관리하는 폴더의 세계
📖 디렉터리란
관련 있는 파일을 하나로 모아놓은 곳입니다. 1개 이상의 자식 디렉터리(sub directory)와 파일을 가질 수 있으며, 디렉터리 자체도 파일입니다. 일반 파일에는 데이터가, 디렉터리에는 파일 정보가 담겨 있을 뿐 구조적으로 같습니다. 디렉터리 헤더에는 이름·만든 시간·접근 시간 등이 기록됩니다.
✓ 마침표 파일과 이중 마침표 파일
디렉터리 내부에는 마침표 파일(.)과 이중 마침표 파일(..)이 존재합니다. .(마침표 1개)는 자기 자신 디렉터리를, ..(마침표 2개)는 상위 디렉터리를 가리킵니다.
절대 경로 vs 상대 경로
경로(Path)는 파일이 전체 디렉터리 중 어디에 있는지를 나타내는 정보입니다. 한 디렉터리에는 같은 이름의 파일이 존재할 수 없지만, 서로 다른 디렉터리에는 같은 이름의 파일이 존재할 수 있습니다.
| 절대 경로 · 루트 디렉터리(최상위)를 기준으로 파일 위치를 나타내는 방식 · 어디서 실행해도 동일한 파일을 가리킴 · 예: /home/user/docs/report.txt |
상대 경로 · 현재 위치(현재 디렉터리)를 기준으로 파일 위치를 나타내는 방식 · 현재 위치가 달라지면 가리키는 파일도 달라짐 · 예: ./docs/report.txt |
04 디렉터리 구조의 발전과 마운트
1단계에서 비순환 그래프까지, 그리고 파티션 통합
| 구조 | 특징 |
| 1단계 디렉터리 | 초기 단순 구조. 루트 디렉터리 밑에 파일만 존재, 자식 디렉터리 생성 불가 |
| 다단계(트리) 디렉터리 | 루트 디렉터리를 시작점으로 가지처럼 뻗는 구조. 단계 확장 제약 없음. 파일과 디렉터리 모두 저장 가능. 모든 경로명 유일 |
| 비순환 그래프 디렉터리 | 트리 구조를 확장·일반화. 파일·디렉터리의 공유 허용 (윈도우의 '바로가기'나 리눅스의 '심볼릭 링크'처럼 하나의 원본 파일을 여러 디렉터리에서 동시에 가리킬 수 있음). 동일한 파일이 다른 디렉터리에 존재 가능. 트리보다 융통성은 좋으나 복잡 |

❌ 트리 구조의 제약
트리 구조 디렉터리는 파일이나 디렉터리의 공유를 금지합니다. 동일한 파일에 두 경로에서 접근하는 것이 불가능하다는 뜻으로, 이 제약을 풀기 위해 비순환 그래프 디렉터리가 등장했습니다.
📖 마운트(Mount)
유닉스에서 여러 개의 파티션을 통합하는 명령어입니다. 새로운 파일 시스템을 사용하려면 먼저 제공된 파일 시스템의 디렉터리에 설치(마운트)하는 절차가 필요합니다. 운영체제는 여러 파일 시스템을 마운트할 수 있는 기능을 제공하며, 이를 통해 여러 파일 시스템을 단일 파일 시스템에서 하나의 파일 집합으로 통합할 수 있습니다.
05 디스크 파일 할당 — 연속 vs 불연속
파일을 디스크에 어떻게 배치할 것인가
📖 파일 할당이란
파일 시스템은 전체 디스크 공간을 같은 크기(1~8KB)의 블록으로 나누고 각 공간에 주소를 붙여 관리합니다. 하나의 파일은 보통 여러 블록에 걸쳐 저장되는데, 이 블록들을 어떻게 연결하느냐에 따라 연속 할당과 불연속 할당으로 나뉩니다.
| 연속 할당 · 파일 데이터를 디스크에 연속으로 배열 · 시작 블록만 알면 전체 파일 접근 가능 · 파일 저장·삭제 반복 시 빈 공간이 흩어져 맞는 연속 공간이 없게 됨 → 실제로는 사용되지 않음 |
불연속 할당 · 비어 있는 블록에 데이터를 분산 저장 · 파일 시스템이 위치 정보를 관리 · 대표 방식: 연결 할당(연결 리스트) / 인덱스 할당(인덱스 블록) → 현재 실제 사용 방식 |

연결 할당 (Linked Allocation)
파일에 속한 데이터를 연결 리스트로 관리하는 방식입니다. 파일 테이블에는 시작 블록 정보만 저장하고, 나머지 데이터는 시작 블록부터 연결합니다. 파일의 맨 끝 블록에는 링크 대신 널(null)을 삽입합니다. 체인처럼 연결된다 하여 체인 할당(Chained Allocation)이라고도 부릅니다.
❌ 연결 할당 — FAT의 용량 제한 단점
연결 할당 방식인 FAT(File Allocation Table)은 테이블의 주소 크기로 파티션 용량이 제한됩니다. FAT16(16bit 주소)은 최대 파티션 크기가 32GB로 한정됩니다. 이를 극복하기 위해 만들어진 FAT32는 8TB까지 지원하지만, 파일 하나의 크기가 4GB로 제한되는 단점이 여전히 남아 있습니다.
인덱스 할당 (Index Allocation)
연결 할당의 용량 제한 문제를 해결하기 위해 등장한 방식입니다. 테이블의 블록 포인터가 데이터 블록을 직접 연결하는 것이 아니라, 데이터의 인덱스를 담고 있는 인덱스 블록을 연결합니다. 인덱스 블록은 실제 데이터의 위치 정보를 순서대로 보관합니다. 테이블이 꽉 차면 간접 인덱스 블록을 추가하는 방식으로 테이블을 무한히 확장할 수 있습니다.
📖 실제 구현 사례 — 유닉스/리눅스의 i-node
유닉스·리눅스의 i-node가 바로 이 인덱스 할당 방식을 사용합니다. 파일 크기에 따라 단계적으로 포인터를 사용하는 구조입니다.
· 직접 블록(Direct) : 소용량 파일에서 데이터 블록을 바로 가리킴 — 속도 빠름
· 단일 간접 블록(Single Indirect) : 인덱스 블록을 한 단계 거쳐 데이터 접근
· 이중 간접 블록(Double Indirect) : 인덱스 블록을 두 단계 거쳐 데이터 접근
· 삼중 간접 블록(Triple Indirect) : 인덱스 블록을 세 단계 거쳐 무한에 가까운 파일 크기 지원
작은 파일은 직접 블록으로 빠르게, 큰 파일은 간접 블록 단계를 늘려 무한히 확장할 수 있도록 설계된 것이 핵심입니다.
06 디스크의 빈 공간 관리와 내부 단편화
삭제된 파일은 정말 지워지는 것일까
📖 내부 단편화(Internal Fragmentation)
블록의 크기가 8KB이면 1KB 파일을 저장해도 블록 하나가 통째로 할당됩니다. 이때 블록에 남는 7KB가 낭비되는데, 이 낭비되는 공간을 내부 단편화라고 합니다. 내부 단편화로 인해 실제 전체 파일의 크기보다 디스크에 할당된 파일의 크기가 항상 더 큽니다.
⚠️ 파일 삭제의 실제 동작 — 빈 공간 리스트
파일이 사용했던 공간을 일일이 지우는 것은 시간이 오래 걸립니다. 그래서 파일 시스템은 파일 테이블의 헤더를 삭제하고, 사용했던 블록을 빈 공간 리스트에 등록하는 것만으로 파일이 삭제된 것으로 간주합니다. 실제 데이터 블록의 내용은 지워지지 않고, 다음에 새로운 파일이 할당될 때 덮어써집니다.

📖 데이터 복구가 가능한 이유
파일을 삭제하면 내용이 즉시 지워지는 것이 아니라 파일 테이블의 헤더만 삭제되고 블록은 빈 공간 리스트에 등록될 뿐입니다. 새 데이터가 그 블록에 덮어쓰이기 전까지는 데이터 복구 프로그램으로 파일을 복원할 수 있는 이유가 바로 여기에 있습니다.
새로운 데이터를 디스크에 넣을 때는 방금 지워진 블록이 아니라 빈 공간 리스트에서 맨 앞에 있는 블록에 할당됩니다.
📌 핵심 정리
· 파일 시스템 : 파일 관리자가 파일 테이블로 저장장치 전체를 관리. 사용자는 파일 디스크립터(접근 권한)를 통해서만 파일에 접근 가능
· 파일 분류 : 실행 파일(더블클릭 → 프로세스 생성) / 데이터 파일(더블클릭 → 연결 프로그램 실행). 확장자를 바꿔도 내용은 바뀌지 않음
· 파일 속성(메타데이터) : name · type · size · time · location · accessibility · owner — 파일 헤더(= FCB, File Control Block)에 저장. 유닉스/리눅스에서는 i-node라고 부름
· 경로 : 절대 경로(루트 기준) vs 상대 경로(현재 위치 기준). 같은 디렉터리에는 같은 이름 파일 불가, 다른 디렉터리라면 가능
· 디렉터리 구조 : 1단계(파일만 존재) → 트리(공유 금지, 경로명 유일) → 비순환 그래프(공유 허용 — 심볼릭 링크/바로가기 기술 사용, 융통성 높으나 복잡)
· 마운트 : 유닉스에서 여러 파티션을 단일 파일 시스템으로 통합하는 명령어
· 연속 할당 : 연속된 블록에 저장 — 이론적으로 단순하나 빈 공간 문제로 실제 미사용
· 불연속 할당 : 연결 할당(연결 리스트·FAT, 용량 제한) / 인덱스 할당(인덱스 블록, 무한 확장 가능 — 유닉스 i-node는 직접·단일간접·이중간접·삼중간접 포인터로 구현)
· 빈 공간 리스트 : 내부 단편화 최소화를 위해 빈 블록 정보만 모아 관리. 파일 삭제 = 헤더 삭제 + 블록을 빈 공간 리스트에 등록
태그 : 파일시스템이란파일디스크립터실행파일 데이터파일 차이절대경로 상대경로디렉터리 구조 종류마운트란연속할당 불연속할당FAT16 FAT32 차이내부단편화란운영체제 파일시스템
'이전 수업 노트 > 운영체제' 카테고리의 다른 글
| 13. 운영체제 네트워크와 분산 시스템 - 네트워크, 보안 운영체제 (0) | 2026.06.26 |
|---|---|
| 11. 입출력 시스템과 저장장치 - 하드디스크 구조, 디스크 스케줄링 (0) | 2026.06.24 |
| 10. 가상 메모리 관리 - 요구 페이징, 페이지 부재, 페이지 교체 알고리즘 (0) | 2026.06.23 |
| 9. 가상 메모리 - 페이징/세그먼테이션, 매핑 테이블, 페이지 부재 (0) | 2026.06.22 |
| 8. 메모리 관리 - 메모리 관리정책, 주소, 메모리 오버레이, 스왑, 분할, 배치 방식 (0) | 2026.06.21 |

