파일 시스템: 두 판 사이의 차이
기술노트
(Gemini 벌크 업로더로 자동 업로드) |
(Gemini 벌크 업로더로 자동 업로드) |
||
1번째 줄: | 1번째 줄: | ||
== | == 파일 시스템 (File System) == | ||
'''파일 시스템'''은 | '''파일 시스템(File System)'''은 운영체제가 저장 장치(하드 디스크, SSD 등)에 데이터를 저장하고, 관리하며, 접근하는 방식을 제어하는 시스템입니다. 복잡한 물리적 저장 장치를 사용자가 이해하기 쉬운 '파일'과 '디렉토리'라는 논리적인 형태로 추상화하여 제공합니다. | ||
파일 | ---- | ||
=== 📂 파일 시스템의 역할 === | |||
* '''데이터 저장 및 관리''' : 파일을 생성, 삭제, 수정, 읽기 등의 작업을 수행하고, 파일을 디렉토리(폴더) 형태로 계층적으로 구성하여 관리합니다. | |||
* '''데이터 보호 및 접근 제어''' : 사용자 및 그룹별로 파일에 대한 접근 권한(읽기, 쓰기, 실행)을 설정하여 데이터를 보호합니다. | |||
* '''물리적 저장 장치 추상화''' : 하드 디스크, SSD, USB 등 다양한 물리적 저장 장치의 특성을 추상화하여, 사용자가 일관된 방식으로 데이터를 다룰 수 있도록 합니다. | |||
* '''공간 관리''' : 저장 장치의 빈 공간을 효율적으로 관리하고, 파일에 할당하며, 단편화(Fragmentation) 문제를 관리합니다. | |||
---- | ---- | ||
=== | === ⚙️ 파일 시스템의 구성 요소 === | ||
* '''파일 | * '''파일 (File)''' : 논리적인 데이터 저장 단위. 이름, 크기, 생성/수정 시간, 접근 권한 등 속성(Attribute)을 가집니다. | ||
* ''' | * '''디렉토리 (Directory)''' : 파일들을 그룹화하여 관리하는 논리적인 단위. 파일의 이름과 해당 파일의 메타데이터(파일 속성, 저장 위치 등)를 가리키는 포인터를 포함합니다. | ||
* ''' | * '''메타데이터 (Metadata)''' : 파일 자체의 내용이 아닌, 파일을 관리하기 위한 정보. (e.g., 파일 이름, 크기, 생성일, 수정일, 소유자, 접근 권한, 데이터 블록 위치 등) | ||
* ''' | * '''데이터 블록 (Data Block)''' : 실제 파일 데이터가 저장되는 물리적인 저장 단위입니다. | ||
* ''' | * '''파일 제어 블록 (FCB, File Control Block)''' : 파일의 메타데이터를 저장하는 자료구조. (디스크에 저장됨) | ||
---- | ---- | ||
=== | === 🛠️ 파일 할당 방식 === | ||
파일 시스템이 디스크 공간을 파일에 할당하는 주요 방식입니다. | |||
* '''연속 할당 (Contiguous Allocation)''' | |||
> * '방식': 파일을 디스크의 연속된 블록에 저장합니다. | |||
> * '장점': 구현이 간단하고, 순차 접근 및 직접 접근이 빠릅니다. | |||
> * '단점': '''외부 단편화(External Fragmentation)''' 발생. 파일 크기 변경이 어렵습니다. | |||
* '''연결 할당 (Linked Allocation)''' | |||
> * '방식': 파일의 각 블록이 디스크의 아무 곳에나 흩어져 저장될 수 있으며, 각 블록이 다음 블록의 주소를 가리키는 포인터를 가집니다. | |||
> * '장점': 외부 단편화가 발생하지 않습니다. 파일 크기 변경이 용이합니다. | |||
> * '단점': 직접 접근이 불가능하고, 순차 접근도 느립니다. 포인터를 위한 추가 공간 필요. 포인터 손상 시 데이터 손실 위험이 있습니다. | |||
* ''' | * '''색인 할당 (Indexed Allocation)''' | ||
* ''' | > * '방식': 각 파일마다 '색인 블록(Index Block)'을 두어, 이 블록에 파일의 모든 데이터 블록 주소를 저장합니다. | ||
* '' | > * '장점': 외부 단편화가 발생하지 않습니다. 직접 접근이 가능합니다. | ||
* '' | > * '단점': 색인 블록을 위한 추가 공간 필요. 작은 파일의 경우 색인 블록 낭비. (다단계 색인, 결합 방식 등으로 해결) | ||
---- | ---- | ||
=== 💡 | === 💡 개발자 핵심 Point === | ||
* 파일 시스템은 운영체제의 핵심 구성 요소 중 하나로, ''' | * 파일 시스템은 운영체제의 핵심 구성 요소 중 하나로, 데이터의 '''영속성(Persistence)'''을 보장합니다. | ||
* | * '''저널링 파일 시스템 (Journaling File System)''' : 파일 시스템의 메타데이터 변경 사항을 '저널(Journal)'이라는 로그에 먼저 기록한 후 실제 디스크에 반영하는 방식. 시스템 충돌 시 데이터 손상을 최소화하고 빠른 복구를 가능하게 합니다. (e.g., ext3/4, NTFS, HFS+) | ||
* 파일 | * '''가상 파일 시스템 (VFS, Virtual File System)''' : 다양한 종류의 파일 시스템(FAT, NTFS, ext4 등)을 동일한 인터페이스로 접근할 수 있도록 추상화 계층을 제공합니다. | ||
* 개발자는 파일 시스템의 동작 방식을 이해함으로써, 파일 I/O 성능을 최적화하거나, 파일 관련 오류를 디버깅하는 데 도움을 받을 수 있습니다. |
2025년 9월 11일 (목) 16:50 기준 최신판
파일 시스템 (File System)
파일 시스템(File System)은 운영체제가 저장 장치(하드 디스크, SSD 등)에 데이터를 저장하고, 관리하며, 접근하는 방식을 제어하는 시스템입니다. 복잡한 물리적 저장 장치를 사용자가 이해하기 쉬운 '파일'과 '디렉토리'라는 논리적인 형태로 추상화하여 제공합니다.
📂 파일 시스템의 역할
- 데이터 저장 및 관리 : 파일을 생성, 삭제, 수정, 읽기 등의 작업을 수행하고, 파일을 디렉토리(폴더) 형태로 계층적으로 구성하여 관리합니다.
- 데이터 보호 및 접근 제어 : 사용자 및 그룹별로 파일에 대한 접근 권한(읽기, 쓰기, 실행)을 설정하여 데이터를 보호합니다.
- 물리적 저장 장치 추상화 : 하드 디스크, SSD, USB 등 다양한 물리적 저장 장치의 특성을 추상화하여, 사용자가 일관된 방식으로 데이터를 다룰 수 있도록 합니다.
- 공간 관리 : 저장 장치의 빈 공간을 효율적으로 관리하고, 파일에 할당하며, 단편화(Fragmentation) 문제를 관리합니다.
⚙️ 파일 시스템의 구성 요소
- 파일 (File) : 논리적인 데이터 저장 단위. 이름, 크기, 생성/수정 시간, 접근 권한 등 속성(Attribute)을 가집니다.
- 디렉토리 (Directory) : 파일들을 그룹화하여 관리하는 논리적인 단위. 파일의 이름과 해당 파일의 메타데이터(파일 속성, 저장 위치 등)를 가리키는 포인터를 포함합니다.
- 메타데이터 (Metadata) : 파일 자체의 내용이 아닌, 파일을 관리하기 위한 정보. (e.g., 파일 이름, 크기, 생성일, 수정일, 소유자, 접근 권한, 데이터 블록 위치 등)
- 데이터 블록 (Data Block) : 실제 파일 데이터가 저장되는 물리적인 저장 단위입니다.
- 파일 제어 블록 (FCB, File Control Block) : 파일의 메타데이터를 저장하는 자료구조. (디스크에 저장됨)
🛠️ 파일 할당 방식
파일 시스템이 디스크 공간을 파일에 할당하는 주요 방식입니다.
- 연속 할당 (Contiguous Allocation)
> * '방식': 파일을 디스크의 연속된 블록에 저장합니다. > * '장점': 구현이 간단하고, 순차 접근 및 직접 접근이 빠릅니다. > * '단점': 외부 단편화(External Fragmentation) 발생. 파일 크기 변경이 어렵습니다.
- 연결 할당 (Linked Allocation)
> * '방식': 파일의 각 블록이 디스크의 아무 곳에나 흩어져 저장될 수 있으며, 각 블록이 다음 블록의 주소를 가리키는 포인터를 가집니다. > * '장점': 외부 단편화가 발생하지 않습니다. 파일 크기 변경이 용이합니다. > * '단점': 직접 접근이 불가능하고, 순차 접근도 느립니다. 포인터를 위한 추가 공간 필요. 포인터 손상 시 데이터 손실 위험이 있습니다.
- 색인 할당 (Indexed Allocation)
> * '방식': 각 파일마다 '색인 블록(Index Block)'을 두어, 이 블록에 파일의 모든 데이터 블록 주소를 저장합니다. > * '장점': 외부 단편화가 발생하지 않습니다. 직접 접근이 가능합니다. > * '단점': 색인 블록을 위한 추가 공간 필요. 작은 파일의 경우 색인 블록 낭비. (다단계 색인, 결합 방식 등으로 해결)
💡 개발자 핵심 Point
- 파일 시스템은 운영체제의 핵심 구성 요소 중 하나로, 데이터의 영속성(Persistence)을 보장합니다.
- 저널링 파일 시스템 (Journaling File System) : 파일 시스템의 메타데이터 변경 사항을 '저널(Journal)'이라는 로그에 먼저 기록한 후 실제 디스크에 반영하는 방식. 시스템 충돌 시 데이터 손상을 최소화하고 빠른 복구를 가능하게 합니다. (e.g., ext3/4, NTFS, HFS+)
- 가상 파일 시스템 (VFS, Virtual File System) : 다양한 종류의 파일 시스템(FAT, NTFS, ext4 등)을 동일한 인터페이스로 접근할 수 있도록 추상화 계층을 제공합니다.
- 개발자는 파일 시스템의 동작 방식을 이해함으로써, 파일 I/O 성능을 최적화하거나, 파일 관련 오류를 디버깅하는 데 도움을 받을 수 있습니다.