파일 시스템: 두 판 사이의 차이

기술노트
(Gemini 벌크 업로더로 자동 업로드)
 
(Gemini 벌크 업로더로 자동 업로드)
 
1번째 줄: 1번째 줄:
== 🗄️ 파일 시스템 ==
== 파일 시스템 (File System) ==


'''파일 시스템'''은 운영체제(OS)가 디스크와 같은 저장 장치에 '''파일을 저장하고, 관리하며, 접근할 수 있도록 하는 체계적인 방법'''입니다. 사용자가 파일을 생성, 삭제, 읽기, 쓰기 등의 작업을 수행할 수 있도록 논리적인 구조를 제공합니다.
'''파일 시스템(File System)'''은 운영체제가 저장 장치(하드 디스크, SSD 등)에 데이터를 저장하고, 관리하며, 접근하는 방식을 제어하는 시스템입니다. 복잡한 물리적 저장 장치를 사용자가 이해하기 쉬운 '파일''디렉토리'라는 논리적인 형태로 추상화하여 제공합니다.


파일 시스템이 없다면, 사용자는 데이터를 디스크의 특정 물리적 주소에 직접 저장하고 관리해야 하는 복잡한 작업을 수행해야 할 것입니다.
----
 
=== 📂 파일 시스템의 역할 ===
 
*  '''데이터 저장 및 관리''' : 파일을 생성, 삭제, 수정, 읽기 등의 작업을 수행하고, 파일을 디렉토리(폴더) 형태로 계층적으로 구성하여 관리합니다.
*  '''데이터 보호 및 접근 제어''' : 사용자 및 그룹별로 파일에 대한 접근 권한(읽기, 쓰기, 실행)을 설정하여 데이터를 보호합니다.
*  '''물리적 저장 장치 추상화''' : 하드 디스크, SSD, USB 등 다양한 물리적 저장 장치의 특성을 추상화하여, 사용자가 일관된 방식으로 데이터를 다룰 수 있도록 합니다.
*  '''공간 관리''' : 저장 장치의 빈 공간을 효율적으로 관리하고, 파일에 할당하며, 단편화(Fragmentation) 문제를 관리합니다.


----
----


=== 🧱 파일 시스템의 주요 기능 ===
=== ⚙️ 파일 시스템의 구성 요소 ===


* '''파일 관리''' : 파일을 생성, 삭제, 이름 변경, 복사, 이동하는 기능을 제공합니다.
*   '''파일 (File)''' : 논리적인 데이터 저장 단위. 이름, 크기, 생성/수정 시간, 접근 권한 등 속성(Attribute)을 가집니다.
* '''디렉터리 관리''' : 파일을 체계적으로 분류하고 관리하기 위한 디렉터리(폴더) 구조를 제공합니다.
*   '''디렉토리 (Directory)''' : 파일들을 그룹화하여 관리하는 논리적인 단위. 파일의 이름과 해당 파일의 메타데이터(파일 속성, 저장 위치 등)를 가리키는 포인터를 포함합니다.
* '''접근 제어''' : 파일이나 디렉터리에 대한 사용자별 접근 권한을 설정하여 보안을 강화합니다.
*   '''메타데이터 (Metadata)''' : 파일 자체의 내용이 아닌, 파일을 관리하기 위한 정보. (e.g., 파일 이름, 크기, 생성일, 수정일, 소유자, 접근 권한, 데이터 블록 위치 등)
* '''공간 관리''' : 디스크의 빈 공간을 효율적으로 할당하고 관리합니다.
*   '''데이터 블록 (Data Block)''' : 실제 파일 데이터가 저장되는 물리적인 저장 단위입니다.
* '''무결성 및 복구''' : 시스템 장애 시 파일 시스템의 일관성을 유지하고 데이터를 복구하는 기능을 제공합니다.
*   '''파일 제어 블록 (FCB, File Control Block)''' : 파일의 메타데이터를 저장하는 자료구조. (디스크에 저장됨)


----
----


=== 📚 파일 시스템의 종류 ===
=== 🛠️ 파일 할당 방식 ===
 
파일 시스템이 디스크 공간을 파일에 할당하는 주요 방식입니다.
 
*  '''연속 할당 (Contiguous Allocation)'''
> * '방식': 파일을 디스크의 연속된 블록에 저장합니다.
> * '장점': 구현이 간단하고, 순차 접근 및 직접 접근이 빠릅니다.
> * '단점': '''외부 단편화(External Fragmentation)''' 발생. 파일 크기 변경이 어렵습니다.


운영체제마다 다양한 파일 시스템을 사용합니다.
*  '''연결 할당 (Linked Allocation)'''
> * '방식': 파일의 각 블록이 디스크의 아무 곳에나 흩어져 저장될 수 있으며, 각 블록이 다음 블록의 주소를 가리키는 포인터를 가집니다.
> * '장점': 외부 단편화가 발생하지 않습니다. 파일 크기 변경이 용이합니다.
> * '단점': 직접 접근이 불가능하고, 순차 접근도 느립니다. 포인터를 위한 추가 공간 필요. 포인터 손상 시 데이터 손실 위험이 있습니다.


* '''FAT (File Allocation Table)''' : MS-DOS 및 초기 Windows에서 사용되던 파일 시스템. 단순하지만 파일 크기 및 파티션 크기 제한이 있고 보안 기능이 약합니다.
*   '''색인 할당 (Indexed Allocation)'''
* '''NTFS (New Technology File System)''' : Windows NT 이후 버전에서 사용되는 파일 시스템. FAT보다 안정성, 보안성, 대용량 파일 지원 등 성능이 크게 향상되었습니다.
> * '방식': 각 파일마다 '색인 블록(Index Block)'을 두어, 이 블록에 파일의 모든 데이터 블록 주소를 저장합니다.
* '''ext (Extended File System)''' 계열 (ext2, ext3, ext4) : Linux에서 주로 사용되는 파일 시스템. 저널링(Journaling) 기능을 통해 시스템 충돌 시 데이터 손상을 최소화합니다.
> * '장점': 외부 단편화가 발생하지 않습니다. 직접 접근이 가능합니다.
* '''HFS+ (Hierarchical File System Plus)''' : macOS에서 사용되는 파일 시스템.
> * '단점': 색인 블록을 위한 추가 공간 필요. 작은 파일의 경우 색인 블록 낭비. (다단계 색인, 결합 방식 등으로 해결)


----
----


=== 💡 정보처리기사 핵심 Point ===
=== 💡 개발자 핵심 Point ===


* 파일 시스템은 운영체제의 핵심 구성 요소 중 하나로, '''데이터를 영구적으로 저장하고 관리하는 역할'''을 합니다.
* 파일 시스템은 운영체제의 핵심 구성 요소 중 하나로, 데이터의 '''영속성(Persistence)'''을 보장합니다.
* 정보처리기사 시험에서는 파일 시스템의 '''개념, 주요 기능, 그리고 각 파일 시스템의 특징과 장단점'''을 묻는 문제가 자주 출제됩니다.
* '''저널링 파일 시스템 (Journaling File System)''' : 파일 시스템의 메타데이터 변경 사항을 '저널(Journal)'이라는 로그에 먼저 기록한 후 실제 디스크에 반영하는 방식. 시스템 충돌 시 데이터 손상을 최소화하고 빠른 복구를 가능하게 합니다. (e.g., ext3/4, NTFS, HFS+)
* 파일 시스템은 디스크의 물리적인 특성(섹터, 트랙, 실린더 등)과 밀접하게 관련되어 있으며, 디스크 스케줄링 알고리즘과 함께 디스크 I/O 성능에 큰 영향을 미칩니다.
* '''가상 파일 시스템 (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 성능을 최적화하거나, 파일 관련 오류를 디버깅하는 데 도움을 받을 수 있습니다.