
파일과 디렉터리
파일 시스템(file system)
- 파일과 디렉터리를 관리하는 운영체제 내의 프로그램
- 파일과 디렉터리를 다루어 주는 프로그램
- 한 컴퓨터 내에 여러 개의 파일 시스템을 사용할 수 있음
- 파일과 디렉터리는 데이터 관점에서는 그냥 보조 기억 장치에 저장된 데이터 덩어리일 뿐.
이를 운영체제가 일목요연하게 관리해주는 것
파일
- 파일이란 보조 기억 장치에 저장되어 있는 의미 있는 정보들을 모은 논리적 단위 (관련 있는 정보들을 한데 모아놓은 단위)
- 파일의 구성 요소
- 파일을 실행하기 위한 정보
- 부가 정보 ( = 속성, 메타 데이터)

파일의 속성
- 종류는 운영 체제, 파일 시스템 별로 다를 수 있지만 대표적으로 아래 내용들이 있음

- 유형
- 같은 이름의 파일이어도 파일의 종류에 따라 실행 양상도 달라짐(텍스트, 음악, 영상 ...)
- 그래서 운영체제에게 힌트를 주기 위해 확장자를 사용
파일 연산을 위한 시스템 호출
- 파일 생성
- 파일 삭제
- 파일 열기
- 파일 닫기
- 파일 읽기
- 파일 쓰기
- 어떤 응용 프로그램도 임의로 파일에 접근하고 조작할 수 없음
- 파일을 다루려면 운영체제에게 시스템 호출을 통해 부탁해야 함
- 그래서 운영체제는 위와 같이 파일 연산을 위한 시스템 호출을 제공
- 암기할 필요는 없음
디렉터리
- 윈도우에서는 폴더(folder)라고 부름
- 옛날 운영체제에서는 기본적으로 하나의 디렉터리(1단계 디렉터리)만 존재했음
- 하지만 요즘은 여러 개의 디렉터리가 계층적으로 구성 => Tree 구조 디렉터리

트리 구조 디렉터리
- 여러 계층으로 파일 및 폴더를 관리하는 트리 구조 디렉터리
- 최상위 디렉터리( = 루트 디렉터리, /), 서브 디렉터리로 구성
- 최상위 디렉터리에서부터 여러 개의 디렉터리들이 계층적으로 구성될 수 있음

경로
- 계층적 디렉터리를 관리하며 생겨난 개념
- 디렉터리를 이용해 파일/디렉터리의 위치, 나아가 이름까지 특정 지을 수 있는 정보
- 같은 디렉터리에는 동일한 이름의 파일이 존재할 수 없지만, 서로 다른 디렉터리에는 동일한 이름의 파일이 존재할 수 있음
- 절대 경로와 상대 경로
- 절대 경로
- 루트 디렉터리에서 자기 자신까지 이르는 고유한 경로 (루트 디렉터리부터 시작하는 경로)
- e,g, ) /home/guest/d.jpg
- 여기서 "/"는 루트 디렉터리를 나타내기도 하지만, 디렉터리간의 구분자로도 사용함
- 상대 경로
- 현재 디렉터리에서 자기 자신까지 이르는 경로 (현재 디렉터리부터 시작하는 경로)
- e,g,) 현재 디렉터리 경로가 /home일 경우 상대 경로는 guest/d.jpg
- 절대 경로
디렉터리 연산을 위한 시스템 호출
- 디렉터리 생성
- 디렉터리 삭제
- 디렉터리 열기
- 디렉터리 닫기
- 디렉터리 읽기
- 파일과 마찬가지로 어떤 응용프로그램도 임의로 디렉터리 연산을 할 수 없음
- 연산을 하기 위해선 운영체제에게 시스템 호출 형태로 부탁해야 함
- 디렉터리 연산을 위한 시스템 호출의 종류는 여러가지가 있는데 그냥 이렇구나 알고 넘어가면 됨
디렉터리 엔트리
- 지금까지 설명으로는 파일과 디렉토리가 엄연히 다른 존재라고 생각할 수 있지만,
사실 많은 운영체제에서는 디렉터리를 그저 '특별한 형태의 파일'로 간주함 - 즉, 디렉터리는 그저 '포함된 정보가 조금 특별한 파일'
- 파일의 내부에는 파일과 관련된 정보들이 있다면,
디렉터리의 내부에는 해당 디렉터리에 담겨 있는 대상과 관련된 정보들이 담겨 있음(주로 테이블[표] 형태로 구성) - 각 엔트리(행)에 담기는 정보
- 디렉터리에 포함된 대상의 이름
- 그 대상이 보조기억장치 내에 저장된 위치(를 유추할 수 있는 정보)

파일 시스템마다 차이가 있을 수 있음 - 다음과 같이 디렉터리 엔트리에 파일 속성을 명시하는 경우도 있음

- 예시

- .. : 상위 디렉터리
- . : 현재 디렉터리

파일 시스템

- 파일 시스템이 파일과 디렉터리를 보조기억장치에 할당하고 접근하는 방법
- 대표적인 파일 시스템의 종류(FAT 파일 시스템, 유닉스 파일 시스템) 학습
파티셔닝과 포매팅
- 이제 막 공장에서 생성되어 한 번도 사용된 적 없는 새 하드 디스크 / SSD는 파티셔닝, 포매팅 하기 전까지는 사용할 수 없음

파티셔닝
- 저장 장치의 논리적인 영역을 구획하는 작업
- 물건을 그냥 두는 것보다 칸막이를 설치하고 여러 물건을 목적에 따라 분류해 정리하는 것이 더 편한 것과 같음
- 즉, 하드디스크나 SSD 처럼 용량이 큰 저장장치를 하나 이상의 논리적인 단위로 구획하는 작업을 "파티셔닝" 이라고 함
- 파티션(Partition) : 파티셔닝을 통해 나누어진 영역들


윈도우 운영체제 - 파티션 만들기 및 포맷
- 파일 시스템이 파티셔닝 되어 있는 모습과 용량을 직접 확인할 수 있음

포매팅
- 파일 시스템을 설정
- 어떤 방식으로 파일을 관리할지 결정, 새로운 데이터를 쓸 준비를 하는 작업
- 참고 - 포매팅의 종류
- 저수준 포매팅 : 공장에서 수행되는 물리적인 포매팅
- 논리적 포매팅 : 파일 시스템을 생성하는 포매팅(앞으로 이야기 할 포매팅)
- USB 포매팅 예시
- 파일 시스템은 포매팅 할 때 결정됨

- 파일 시스템에는 여러 종류가 있고, 파티션마다 다른 파일 시스템을 설정할 수 있음
- 포매팅까지 완료하여 파일 시스템을 설정했다면 이제 파일과 디렉터리 생성이 가능해짐

파일 할당 방법
- 포매팅까지 끝난 하드 디스크에 파일을 저장하는 방법
- 운영체제는 파일/디렉터리를 블록 단위로 읽고 씀
- 하드 디스크의 가장 작은 저장 단위는 섹터이지만, 섹터는 크기가 너무 작고 개수도 많기 때문에,
하나 이상의 섹터를 블록이라고 하는 단위로 묶은 뒤에 블록 단위로 파일과 디렉토리를 관리함
- 하드 디스크의 가장 작은 저장 단위는 섹터이지만, 섹터는 크기가 너무 작고 개수도 많기 때문에,
- 하나의 파일이 보조기억장치에 저장될 때에는 여러 블록에 걸쳐 저장됨
- 파일이 크면 많은 수의 블록에, 파일이 작으면 적은 수의 블록에 저장됨

파일 할당의 종류

- 파일을 보조기억장치에 할당하는 두 가지 방법 : 연속 할당, 불연속 할당
- 요즘은 불연속 할당이 많이 사용됨
연속 할당
- 보조 기억 장치의 연속적인 블록에 걸쳐서 파일을 저장하는 방식
(= 파일이 저장 장치 내에서 연속적인 공간을 차지하도록 블록을 할당하는 방법)

- 연속된 파일에 접근하기 위해 파일의 첫 번째 블록 주소와 블록 단위의 길이만 알면 됨
- 디렉터리 엔트리 : 파일 이름 & 첫 번째 블록 주소 & 블록 단위 길이 명시

연속 할당의 부작용
- 연속 할당의 구현은 단순하지만 외부 단편화를 야기할 수 있음


불연속 할당 - 연결 할당
- 각 블록의 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당
- 파일을 이루는 데이터 블록을 연결 리스트로 관리
- 불연속 할당의 일종 : 파일이 여러 블록에 흩어져 저장되어도 무방

- 디렉터리 엔트리 : 파일 이름 & 첫번째 블록 주소 & 블록 단위의 길이

연결 할당의 단점
- 반드시 첫 번째 블록부터 하나씩 읽어들여야 함
- = 파일의 임의의 위치에 접근하는 속도 (= 임의 접근 속도)가 느리다
- 영화 파일처럼 엄청 큰 파일이어도 첫 번째 블록부터 접근해야 함
- 성능 면에서 비효율
- 오류 발생 시 해당 블록 이후 블록 접근이 어려움
불연속 할당 - 색인 할당
- 파일의 모든 블록 주소를 색인 블록이라는 하나의 블록에 모아 관리하는 방식
- 하나의 블록 안에 어떤 주소에 접근해야 되는지가 쭉 적혀 있는 형태
- 파일 내 임의의 위치에 접근하기 용이

- 디렉터리 엔트리 : 파일 이름 & 색인 블록 주소

파일 시스템
FAT 파일 시스템
- 연결 할당 기반 파일 시스템
- 연결 할당의 단점을 보완
- USB 메모리, SD카드 등 저용량 저장장치에서 많이 사용되는 파일 시스템
- 운영 방식이 단순하여 작은 용량의 프로그램들을 읽고 쓸 때 속도가 빠름
- 그래서 모바일 기기, 디지털 카메라 등 다른 기기와 호환이 잘 됨(FAT32 추가 공부)

- 연결 할당의 단점 발생 원인은 모든 블록 안에 다음 번지 블록의 주소를 기록했기 때문
- 그러므로, 각 블록에 포함된 다음 블록 주소를 한 곳에 모아 테이블(FAT : File Allocation Table)로 관리함으로써 단점 보완

- FAT 데이터 자체가 메모리에 캐시될 수 있음
- FAT가 메모리에 캐시될 경우 느린 임의 접근 속도 개선 가능 (보조기억장치보다 메모리에 있는게 더 빠르니까)
FAT 파일 시스템의 파티션 모습

- 예약 영역 : 이미 정해져 있는 일정 데이터들을 저장하는 공간
- FAT 영역 : FAT가 저장된 공간
- 루트 디렉터리 영역 : 루트 디렉터리가 저장되는 영역
- 데이터 영역 : 서브 디렉터리와 파일들을 저장하기 위한 영역
FAT 파일 시스템의 디렉터리 엔트리

- 파일의 속성까지도 디렉터리 엔트리에 표기
FAT 파일 시스템이 파일에 접근하는 과정 예시
- /home/minchul/a.sh을 읽는 과정


- 루트 디렉터리 접근 → home 디렉터리 위치 확인 → 3번 블록으로 이동하여 home 디렉터리 확인, 민철 디렉터리 탐색 → 15번 블록으로 이동하여 민철 디렉터리 확인, a.sh 파일 탐색 → 9번 블록으로 이동 , 파일 읽기 시작 → 8번 블록으로 이동 → 11번 블록으로 이동 → 13번 블록으로 이동 → -1을 만났으므로 파일의 끝
유닉스 파일 시스템
- 색인 할당 기반 파일 시스템
- 색인 블록 == i - node
- 파일의 속성 정보와 15개의 블록 주소 저장 가능
- 파일의 속성은 무엇인지, 어디에 저장되어 있는지가 총 15개 블록에 걸쳐 확인해 볼 수 있음
- 파일마다 i - node를 가지고 있고, i - node마다 고유한 번호가 부여되어 있음
- i - node만 봐도 어떤 파일이 어떤 속성을 갖고 있고 어디에 저장되어 있는지 전부 다 알 수 있음

유닉스 파일 시스템의 파티션 모습

만약 15개의 블록 주소보다 큰 파일을 저장해야 한다면?

1. 블록 주소 중 12개에는 직접 블록 주소 저장
- 직접 블록 : 파일 데이터가 저장된 블록

2. 1번으로 충분하지 않다면 13번째 주소(블록 주소 12)에 단일 간접 블록 주소 저장
- 단일 간접 블록 : 파일 데이터를 저장한 블록 주소가 저장된 블록

3. 2번으로 충분하지 않다면 14번째 주소(블록 주소 13)에 이중 간접 블록 주소 저장
- 이중 간접 블록 : 단일 간접 블록들의 주소를 저장하는 블록

4. 3번으로 충분하지 않다면 15번째 주소(블록 주소 14)에 삼중 간접 블록 주소 저장
- 삼중 간접 블록 : 이중 간접 블록들의 주소를 저장하는 블록

유닉스 파일 시스템의 디렉터리 엔트리

- i - node가 파일 시스템의 핵심
- 사실상 i - node가 파일 이름 빼고 모든 것을 다 갖고 있다고 봐도 됨
- 그러므로 디렉터리 엔트리에는 i - node 번호, 파일 이름만 명시가 되어 있음
유닉스 파일 시스템이 파일에 접근하는 방법 예시
- /home/minchul/a.sh을 읽는 과정

1. 루트 디렉터리에 접근 (i - node 2)
- 유닉스 파일 시스템은 루트 디렉터리에 접근하기 위한 데이터 주소를 담고있는 노드를 항상 기억하고 있음
- 2번 노드를 확인함으로써 루트 디렉터리가 1번에 있다는 것을 확인

2. 루트 디렉터리에서 home의 i - node 번호 확인 : 3

3. i - node 3 확인하여 홈 디렉터리의 위치 확인 : 210번 블록

4. 210번 블록에서 홈 디렉터리 확인, 민철 디렉터리의 i - node 번호 확인 : 8

5. i - node 8번에 있는 민철 디렉터리의 주소 확인 : 121번 블록

6. 121번 블록의 민철 디렉터리에서 a.sh 파일의 i - node 확인 : 9

7. i - node 9번 확인하여 a.sh 파일 주소 확인 : 98, 12, 13
8. 98, 12, 13번 블록 읽기

출처 : 혼자 공부하는 컴퓨터구조 + 운영체제
(추가 공부)
NTFS (New Technology File System) - 윈도우 운영체제

- New Technology File System
- Boot Sector (VBR) : 컴퓨터 저장 장치에서 포맷된 각 파티션(볼륨)의 가장 첫 번째 섹터에 위치하는 영역. 파티션 정보
- Master File Table(MFT) : 파일 및 디렉터리 관리를 위한 정보
- Data : 실제 데이터 저장
- 윈도우 운영체제의 파일시스템
- 큰 용량의 파일을 효율적으로 관리할 수 있고, 안정적인 보안 및 복구 기능을 지원함
- 안정성과 보안성이 좋지만 액세스 속도가 느리다는 단점이 있음
- 특징
- 데이터 복구 기능(저널링, Journaling)
- 파일 시스템의 변경 사항을 로그로 기록하여, 정전이나 시스템 오류 등 문제 발생 시에도 기록을 토대로 데이터를 빠르게 복구하는 기능
- 저널링
- 파일 시스템에서 데이터 무결성을 보장하기 위한 핵심 기술
- 파일 시스템이 데이터를 디스크에 기록하는 과정에서 문제가 발생할 경우를 대비해 파일 시스템의 변경 사항을 기록하는 방식으로, 시스템 오류 후에도 데이터를 복구할 수 있음
- 저널(Journal)이라는 공간에 변경 사항을 먼저 기록함. 이 저널은 로그처럼 작동하며 파일 시스템에 어떤 변경이 발생할지 미리 기록해둠
- 보안 및 권한 설정
- 파일 및 디렉터리 단위로 사용자 권한 설정 가능(읽기, 쓰기, 실행)
- 파일과 디렉터리 단위로 암호화 기능 지원(EFS, Encrypting File System)
- 대용량 지원 : 이론상 264 Bytes까지 가능하나, 실제로 244 Butes(16TB)까지 지원
- 데이터 복구 기능(저널링, Journaling)
NTFS의 파티션 구조(VBR)

참고 :
https://velog.io/@rinm/NTFS-structure
https://nurilab.github.io/2022/12/07/ntfs1/
EXT 파일 시스템 - 리눅스 운영체제
- Extended File System ( = EXT = EXTFS)
- MFS(MINIX File System)의 한계를 위해 만듦
- 파일 시스템 최대 크기 64MB(MFS) -> 2GB(EXT)
- 파일 이름 최대 길이 14~30byte(MFS) -> 255byte(EXT)
- EXT1, EXT2, EXT3, EXT4 등의 버전이 있음
- EXT4는 저널링 기능과 대용량 파일 지원을 강화한 최신 버전으로 성능과 안정성이 대폭 향상됨
- 최대 16TB의 파일과 1EB(엑사바이트) 파일 시스템 크기를 지원
- 저널링 기능 지원 : 데이터 무결성 보장, 손상 방지
- 파일 시스템을 빠르게 검사하는 기능이 있어 부팅 시간 단축
- 저장 장치의 디스크 공간을 효율적으로 사용하기 위해 지연 할당(Delayed Allocation)을 사용하여 파일 데이터를 더 나은 방식으로 배치
- 시스템이 부팅된 상태에서도 파일 시스템을 검사할 수 있음
- 파일이 조각나지 않도록 설계되어 파일 액세스 속도가 빠름
참고 :
https://m.blog.naver.com/battledocho/50090598670
'취업역량강화 > 컴퓨터공학' 카테고리의 다른 글
| [운영체제] 가상메모리(쓰기 시 복사, 계층적 페이징, 페이지 교체, 스레싱, 프레임 할당) (0) | 2026.02.25 |
|---|---|
| [운영체제] 가상 메모리 (연속 메모리 할당, 페이징을 통한 가상 메모리 관리) (0) | 2026.02.23 |
| [운영체제] 교착 상태와 해결 방법 (0) | 2026.02.21 |
| [운영체제] 프로세스 동기화(뮤텍스 락, 세마포, 모니터) (0) | 2026.02.19 |
| [운영체제] CPU 스케줄링과 스케줄링 알고리즘 (0) | 2026.02.17 |