파일 시스템은 운영체제가 보조기억장치에 있는 데이터를 파일과 디렉터리 형태로 관리하는 체계다.
• 데이터가 무질서하게 저장되면 찾기 힘들고 관리도 어려움
• 파일 시스템이 이름, 경로, 속성 등으로 데이터를 효율적으로 관리
• 손상 방지, 빠른 접근성, 데이터 보안까지 가능하다
운영체제 | 파일 시스템 종류 |
---|---|
Windows | NTFS, FAT32 |
Linux | EXT4, XFS |
macOS | APFS |
2-1. 파일(File)
파일은 데이터를 저장하는 기본 단위.
구성 요소:
• 파일 이름: 사용자가 파일을 구별하는 이름
• 메타데이터(Metadata): 파일의 속성 정보 (파일 크기, 위치, 생성일, 수정일, 권한 등)
• 데이터(Data): 실제 내용 (문서, 이미지, 실행 파일 등)
메타데이터가 왜 중요하냐
• 파일 검색 속도 증가
• 보안 설정 가능 (읽기/쓰기 권한 등)
• 수정 및 접근 이력 관리
2-2. 디렉터리(Directory)
디렉터리는 파일과 다른 디렉터리를 조직적으로 모아 놓은 컨테이너.
Windows: 폴더
Mac,Linux: 디렉터리라고 부른다
디렉터리 구조
• 트리 구조(Tree Structure): 계층적인 구조
• 루트 디렉터리(/): 최상위 폴더
• 서브 디렉터리: 하위 폴더
경로(Path)
• 절대 경로: 루트(/)부터 시작 → /home/user/docs/file.txt
• 상대 경로: 현재 위치 기준 → ../docs/file.txt
중요! 디렉터리도 결국 “파일”이다
• 디렉터리 = 파일 목록을 담고 있는 특별한 파일
• 디렉터리 엔트리(Directory Entry) 에 파일 이름 + 파일 위치 정보 포함
3-1. 파일 디스크립터(File Descriptor)
파일을 사용할 때 운영체제가 파일을 식별하기 위해 부여하는 정수 값이다.
• Linux/Unix: 파일 디스크립터
• Windows: 파일 핸들(File Handle)
대표적인 파일 디스크립터 번호
번호 | 의미 | 설명 |
---|---|---|
0 | 표준 입력(stdin) | 사용자 입력 처리 |
1 | 표준 출력(stdout) | 화면 출력 |
2 | 표준 오류(stderr) | 오류 메시지 출력 |
3-2. 시스템 콜(System Call)
응용 프로그램이 운영체제의 자원을 요청할 때 사용하는 인터페이스.
파일 관련 주요 시스템 콜:
• open(): 파일 열기 → 파일 디스크립터 반환
• write(): 파일 쓰기 → 디스크립터 필요
• read(): 파일 읽기
• close(): 파일 닫기
왜 시스템 콜을 사용하냐
• 사용자 프로그램이 직접 메모리나 하드 접근 못하게 막아서 보안 강화
• 운영체제가 권한 관리하고 자원 낭비 방지
4-1. 블록 단위 저장
• 보조기억장치 → 블록(Block) 단위로 데이터를 저장
• 블록 크기: 보통 4KB
• 하나의 파일 = 여러 블록에 분산 저장 가능
4-2. 파일 할당 기법
(1) 연속 할당(Contiguous Allocation)
• 연속된 블록에 파일을 저장
장점: 빠른 접근
단점: 외부 단편화 발생, 파일 크기 예측 어려움
(2) 연결 할당(Linked Allocation)
• 각 블록에 다음 블록의 주소 저장
장점: 단편화 해결
단점: 임의 접근 속도 느림 (순차 접근만 빠름)
(3) 색인 할당(Indexed Allocation)
• 모든 블록 주소를 색인 블록에 저장
장점: 빠른 임의 접근 가능
단점: 색인 블록이 커질 수 있음
5-1. 아이노드(Inode)란?
Linux와 macOS 같은 시스템에서는 아이노드라는 구조체로 파일 정보를 관리한다.
아이노드에 저장된 정보:
• 파일 크기, 생성일, 수정일
• 파일 권한 및 소유자
• 데이터 블록 주소(중요!)
아이노드에는 “파일 이름”이 없음
→ 파일 이름은 디렉터리 엔트리에서 관리
5-2. EXT4 파일 시스템 구조
EXT4는 Linux에서 가장 널리 쓰이는 파일 시스템
구성 요소
구성 요소 | 설명 |
---|---|
슈퍼 블록(Superblock) | 파일 시스템 전체 정보 (크기, 상태, 버전) |
블록 그룹(Block Group) | 데이터 블록 묶음 |
아이노드 테이블(Inode Table) | 파일의 메타데이터 저장 |
데이터 블록(Data Block) | 실제 파일 내용 저장 |
블록 비트맵(Block Bitmap) | 사용 중인 블록 여부 추적 |
5-3. 아이노드와 디렉터리 관계
디렉터리 엔트리 구조
항목 | 설명 |
---|---|
파일 이름 | 파일 구분을 위한 이름 |
아이노드 번호(Inode Number) | 파일 위치 및 속성 찾기 위한 열쇠 |
디렉터리는 결국 “아이노드 번호 목록”을 가진 파일이라고 보면 된다.
아이노드(Inode) vs 파일 디스크립터(File Descriptor)
아이노드와 파일 디스크립터, 둘 다 “파일과 관련된 정보”지만 역할이 완전히 다르다
구분 | 아이노드(Inode) | 파일 디스크립터(File Descriptor) |
---|---|---|
정의 | 파일의 메타데이터(속성 정보)를 담은 데이터 구조체 | 프로세스가 파일을 열 때 운영체제가 부여하는 식별 번호 |
저장 위치 | 디스크(보조기억장치)에 저장 | 운영체제(커널)의 메모리 공간에 저장 |
역할 | 파일의 크기, 권한, 생성일, 수정일, 데이터 위치 정보 제공 | 열려 있는 파일을 프로세스가 사용할 수 있도록 식별 및 관리 |
파일 이름 포함? | ❌ 포함하지 않음 (이름은 디렉터리 엔트리가 관리) | ❌ 이름 포함 없음 (아이노드와 연결된 내부 정보만 참조) |
언제 사용? | 파일 자체 정보 확인이나 저장 시 사용 | 프로세스가 파일을 읽거나 쓸 때 사용 |
수명 | 파일이 존재하는 동안 계속 유지 | 파일 열 때 생성, 닫으면 사라짐 |
비유 | 책의 도서관 카드 (책 위치와 정보 기록) | 도서관에서 책을 빌릴 때 받는 대출 번호표 (임시로 사용하는 표) |
관계 | 아이노드는 파일에 대한 정적 정보(속성) 제공 | 파일 디스크립터는 프로세스가 파일을 조작할 때 임시로 생성되는 번호 |
• 아이노드: 파일의 영구적인 정보 (크기, 위치, 권한 등)를 관리
• 디스크립터: 파일을 현재 열고 있는 프로세스가 사용하기 위한 임시 번호
쉽게 정리하자면
• 아이노드: 파일의 주민등록번호 카드 → 항상 존재 & 영구 정보
• 디스크립터: 파일 열 때 받는 일회용 번호표 → 작업 끝나면 사라짐
커피를 고를 때 메뉴판 보고 주문하면 진동벨을 받는 것처럼
아이노드로 파일 위치를 확인하고 디스크립터로 파일을 다룬다.
6-1. 하드 링크(Hard Link)
• 같은 아이노드를 공유하는 다른 이름의 파일
• 원본 삭제 시에도 데이터 유지 (링크가 남아 있으면 파일 유효)
6-2. 심볼릭 링크(Symbolic Link)
• 원본 파일 경로를 저장한 파일 (Windows 바로가기 개념)
• 원본 삭제 시 링크 깨짐
링크 종류 | 아이노드 공유 | 원본 삭제 시 | 특징 |
---|---|---|---|
하드 링크(Hard Link) | 공유 | 데이터 유지 | 같은 파일, 다른 이름 |
심볼릭 링크(Symbolic Link) | 미공유 | 링크 깨짐 | 경로만 참조 (바로가기) |
7-1. 마운트란?
• 외부 저장장치(USB, 외장하드 등)를 운영체제에 연결해 사용하는 과정
예: USB 연결 시 /mnt/usb 경로에서 접근 가능
자동 마운트 vs 수동 마운트
구분 | 자동 마운트 | 수동 마운트 |
---|---|---|
작동 방식 | USB 꽂으면 자동 연결 | 사용자가 직접 명령어 입력 필요 |
사용 환경 | Windows, macOS 데스크탑 | Linux 서버, 전문가용 환경에서 사용 |
편의성 | ✅ 편리함 (초보자 친화적) | ❌ 불편하지만 세밀한 설정 가능 |
예시 | USB 꽂자마자 자동 인식 | mount 명령어로 수동 연결 필요 |
마운트와 링크 파일의 차이
비교 항목 | 마운트(Mount) | 링크 파일(하드/심볼릭) |
---|---|---|
역할 | 외부 장치를 시스템에 연결 | 다른 파일을 참조하거나 여러 이름으로 접근 |
적용 대상 | USB, 외장하드, CD 등 저장장치 연결 | 파일 또는 디렉터리 내부 참조 |
연결 해제 시 | umount 하면 접근 불가 | 하드 링크는 삭제해도 작동, 심볼릭 링크는 깨짐 |
비유 | 새로운 방에 들어가는 문을 만들기 | 집에 출입문 추가(하드 링크) or 표지판 설치(심볼릭) |
마무리.
개념 | 설명 |
---|---|
파일 시스템 | 보조기억장치를 파일 및 디렉터리로 관리하는 체계 |
파일 | 이름, 메타데이터, 실제 데이터로 구성 |
디렉터리 | 파일 목록을 가진 특수 파일, 트리 구조로 계층 관리 |
파일 디스크립터 | 운영체제가 파일을 식별하기 위해 부여하는 정수 |
할당 방식 | 연속 할당, 연결 할당, 색인 할당 등 다양한 방식으로 블록 관리 |
아이노드 | 파일의 메타데이터와 데이터 블록 주소를 저장, 이름은 디렉터리 관리 |
링크 파일 | 하드 링크: 같은 아이노드, 심볼릭 링크: 경로 참조 |
마운트 | 외부 파일 시스템을 내부 파일 시스템에 연결 |