PromleeBlog
sitemap
aboutMe

posting thumbnail
파일 시스템 인터페이스란? - 하루 10분 운영체제 13일차
File System Interface Explained - 10 Minutes of OS Day 13

📅

🚀

들어가기 전에 🔗

우리가 어떤 파일을 열거나 저장할 때, 그 이면에서는 운영체제가 파일을 관리하고 읽고 쓰는 작업을 대신 처리하고 있습니다. 이런 역할을 담당하는 부분이 바로
파일 시스템 인터페이스
입니다.
이 글의 썸네일은 계층 구조로 정리된 디렉터리와 여러 종류의 파일들이 아이콘처럼 연결된 모습으로, 운영체제가 사용자와 파일을 어떻게 이어주는지를 시각화한 이미지입니다.
이번 글에서는 파일 시스템의 기본 개념부터, 디렉터리 구조, 보호 방식, 메모리 사상 파일 등 실제로 자주 사용하는 기능들을 하나하나 살펴보겠습니다.

🚀

파일이란? 🔗

운영체제에서
파일(file)
이란 데이터를 연속적으로 저장한 논리적인 단위입니다. 예를 들어 텍스트 파일, 이미지 파일, 실행 파일 등 다양한 종류의 데이터가 모두 '파일'이라는 이름으로 관리됩니다.

파일의 기본 구성 요소 🔗


🚀

파일 접근 방법 🔗

파일을 사용할 때, 운영체제는 어떤 방식으로 데이터를 읽고 쓸지를 결정해야 합니다. 이를
접근 방식(access method)
이라고 합니다.

1. 순차 접근(Sequential Access) 🔗

가장 일반적인 방식으로, 앞에서부터 차례대로 데이터를 읽는 방식입니다.
예: 텍스트 파일, 음악 파일, 영상 스트리밍 등
예: 앞에서부터 → A → B → C 순서로만 접근 가능

2. 직접 접근(Direct Access) 🔗

특정 위치의 데이터를 바로 찾아가는 방식입니다. 레코드나 블록 단위로 나뉜 데이터를 다룰 때 사용합니다.
예: 데이터베이스 파일, 블록 장치 파일 등
예: 임의의 위치 → 바로 C → B → A 순서로 접근 가능

3. 인덱스 접근(Index Access) 🔗

인덱스를 사용해 원하는 위치로 바로 이동하는 구조입니다. 책의 목차처럼 필요한 내용을 빠르게 찾을 수 있습니다.
인덱스 접근은 단순히 목차처럼 이동하는 비유 외에도, 시스템 내부에서는 다음과 같은 방식으로 구현됩니다
예: 3번째 블록 주소 → Index[3] → 0x00FA4
이 방식은 대규모 데이터베이스, 로그 시스템, 파일 시스템 구현에서 많이 활용됩니다.

세 가지 접근 방식(순차, 직접, 인덱스)을 비교하는 구조도
세 가지 접근 방식(순차, 직접, 인덱스)을 비교하는 구조도

🚀

디렉터리 구조 🔗

디렉터리는 파일을
논리적으로 분류하고 정리하는 공간
입니다. 마치 책장을 폴더로 나누어 책을 정리하듯, 디렉터리는 파일들을 구조적으로 관리해줍니다.

1. 단일 레벨 구조 🔗

2. 2단계 구조 🔗

3. 트리 구조 (계층 구조) 🔗

트리 구조 디렉터리 예시
트리 구조 디렉터리 예시

4. 그래프 구조 🔗


🚀

파일 보호 🔗

운영체제는 각 파일에 대해
누가 무엇을 할 수 있는지
를 제어합니다. 이를
파일 보호(file protection)
라고 합니다.

보호 방식 🔗

운영체제는 다음과 같은 방식으로 권한을 관리합니다:

보호 방식 예시 🔗

리눅스나 유닉스 시스템에서 파일 보호 권한은 rwxr-x--x 같은 형태로 표시됩니다. 9개의 문자열을 3개씩 묶어서 각 권한을 표시합니다.
r, w, x 순서로 읽기, 쓰기, 실행 권한을 표시합니다.
위치권한의미
사용자 (user)rwx읽기, 쓰기, 실행 가능
그룹 (group)r-x읽기, 실행만 가능 (쓰기 불가)
기타 사용자 (others)--x실행만 가능 (읽기/쓰기 불가)
예: chmod 751 somefile.txtrwxr-x--x
이 구조는 프로세스 격리, 보안 설정, 접근 제한에 중요한 역할을 합니다.

🚀

메모리 사상 파일 (Memory-mapped Files) 🔗

프로세스가 파일을 열면, 운영체제는 파일 내용을 메모리에 매핑할 수 있습니다. 이를
메모리 사상 파일(memory-mapped file)
이라고 부릅니다.
👨‍💻
즉, 파일을 디스크에서 읽는 것이 아니라 마치 메모리의 일부처럼 접근할 수 있게 해주는 기법입니다.
파일을 메모리에 매핑해서 사용하는 메모리 사상 방식은 기존의 read() 방식보다 성능 면에서 훨씬 유리합니다.
예를 들어, 텍스트 파일을 100MB 읽는 경우
실제 벤치마크에서는 mmap 방식이 read 대비 1.5~2배 이상 빠르게 동작하는 경우가 많습니다.

예시 흐름 🔗

  1. 파일을 mmap() 시스템 콜로 메모리에 매핑
  2. 이후 read() 없이 포인터처럼 데이터 접근 가능
  3. 변경된 내용은 나중에 파일에 반영
기존 방식은 매번 디스크에서 데이터를 읽어야 하지만, mmap은 메모리에서 바로 접근하므로 속도가 훨씬 빠릅니다. 대량 파일 처리 시 수백 MB/s 이상의 차이가 날 수 있습니다.
이는 데이터베이스, 캐시 시스템, 고속 I/O 등에 많이 활용됩니다.

🚀

요약 🔗

파일 시스템 인터페이스는 모든 프로그램의 기반이 되는 구조입니다.
이번 글에서는 파일 시스템의 핵심 인터페이스인
파일 구조, 접근 방식, 디렉터리 구성, 보호 기법
을 중심으로 정리했습니다. 다음 글에서는 실제
파일 시스템 구현
을 중심으로 깊이 있게 들어가겠습니다.

참고 🔗