혼공컴운_CH15_1_파일시스템

Today Jeeho Learned·2026년 3월 22일
post-thumbnail

INTRO

파일 시스템이란 파일과 디렉터리를 관리하는 운영체제 내부의 시스템이다.
파일과 디렉터리는 보조기억장치에 저장된 데이터 덩어리로 볼 수 있다.


1. 파일 (File)

파일이란?

파일은 보조기억장치에 저장된, 의미 있고 관련된 정보의 집합이다.
파일에는 실행을 위한 정보 외에도 속성(attribute)메타데이터 등의 부가 정보가 포함된다.

파일을 다루기 위해서는 반드시 운영체제를 거쳐야 한다.
파일 생성, 삭제, 열기/닫기, 읽기, 쓰기 등 다양한 시스템 호출(System Call) 이 존재한다.


2. 디렉터리 (Directory)

  • Windows에서는 폴더(Folder) 라고도 부른다.
  • 초기에는 단일 디렉터리(1단계)만 사용했지만, 현재는 트리(Tree) 구조의 계층적 디렉터리를 사용한다.

주요 용어

용어설명
루트 디렉터리최상위 디렉터리. / 로 표현한다.
서브 디렉터리루트 디렉터리 아래에 있는 디렉터리
절대 경로루트 디렉터리(/)부터 시작하는 경로
상대 경로현재 디렉터리(.)부터 시작하는 경로

예시g.jpg 파일의 경우:

  • 절대 경로: /home/guest/g.jpg
  • 상대 경로: guest/g.jpg (현재 위치가 /home인 경우)

운영체제는 디렉터리를 다루는 다양한 시스템 호출도 제공한다.

디렉터리 엔트리 (Directory Entry)

많은 운영체제에서 디렉터리는 특별한 형태의 파일로 간주된다.
디렉터리 내부에는 해당 디렉터리에 속한 파일/서브 디렉터리의 정보가 테이블 형태로 저장된다.

디렉터리 테이블에 공통적으로 포함되는 정보:

  • 포함된 대상의 이름
  • 보조기억장치 내 저장 위치

3. 파티셔닝과 포매팅

새로운 하드디스크나 SSD를 곧바로 사용하는 것은 불가능하다.
파일을 저장하기 전에 반드시 파티셔닝포매팅 과정이 필요하다.

작업설명
파티셔닝 (Partitioning)저장 장치를 논리적 영역으로 구획하는 작업
포매팅 (Formatting)파일 시스템을 설정하는 작업. 어떤 방식으로 파일을 저장·관리할지 결정하고, 새 데이터를 쓸 준비를 한다.

4. 파일의 할당 방법

포매팅이 완료된 저장 장치에는 파일을 저장할 수 있다.
운영체제는 파일과 디렉터리를 블록(Block) 단위로 읽고 쓴다.
하나의 파일은 여러 블록에 걸쳐 저장되며, 할당 방식은 크게 두 가지로 나뉜다.

파일 할당 방법
├── 연속 할당
└── 불연속 할당
    ├── 연결 할당
    └── 색인 할당

4-1. 연속 할당 (Contiguous Allocation)

보조기억장치 내 연속적인 블록에 파일을 할당하는 방법이다.

  • 디렉터리 엔트리 저장 정보: 파일 이름, 첫 번째 블록 주소, 블록 단위 길이
  • 파일에 접근하려면 첫 번째 블록의 주소와 길이만 알면 된다.

단점 — 외부 단편화 (External Fragmentation)

파일 D, F가 삭제된 상황을 가정하면, 남은 블록이 11개더라도 연속된 공간이 부족해 7개 이상의 블록을 필요로 하는 파일은 저장할 수 없다.


4-2. 불연속 할당 (Non-contiguous Allocation)

외부 단편화를 해결하기 위해 파일을 여러 블록에 흩어서 저장하는 방식이다.

연결 할당 (Linked Allocation)

각 블록의 일부에 다음 블록의 주소를 저장하여, 블록들이 연결 리스트(Linked List) 형태로 구성된다.

  • 디렉터리 엔트리 저장 정보: 파일 이름, 첫 번째 블록 주소, 블록 단위 길이 (또는 마지막 블록 주소)

단점:

  • 반드시 첫 번째 블록부터 순차적으로 읽어야 한다. (임의 접근 불가)
  • 특정 블록에 오류가 발생하면 이후 블록에 접근할 수 없다.

색인 할당 (Indexed Allocation)

파일의 모든 블록 주소색인 블록(Index Block) 이라는 하나의 블록에 모아 관리하는 방식이다.

  • 파일 내 임의의 위치에 바로 접근할 수 있다.
  • 디렉터리 엔트리 저장 정보: 파일 이름, 색인 블록 주소

5. 파일 시스템 종류

5-1. FAT 파일 시스템

연결 할당 기반의 파일 시스템으로, 연결 할당의 단점을 보완한 방식이다.

연결 할당의 근본적인 문제는 각 블록 안에 다음 블록의 주소가 분산되어 있다는 것이다.
FAT는 이 주소들을 하나의 테이블(File Allocation Table) 로 모아 관리한다.

FAT의 장점

  • FAT 테이블을 메모리에 캐시(Cache) 할 수 있어 임의 접근 속도가 개선된다.
  • 블록 하나에 문제가 생겨도 테이블을 통해 다른 블록에 접근할 수 있다.

디렉터리 엔트리

FAT 파일 시스템의 디렉터리 엔트리에는 파일의 속성 정보도 함께 저장된다.

FAT 파일 시스템 접근 예시

a.sh 파일을 읽는 과정:
1. FAT 테이블에서 a.sh의 시작 블록 확인 (예: 3번 블록)
2. FAT 테이블을 따라 순서대로 블록 확인: 3번 → 15번 → 9번
3. 실제 데이터 블록 접근: 9번 → 8번 → 11번 → 13번


5-2. 유닉스 파일 시스템 (Unix File System)

색인 할당 기반의 파일 시스템이다.
색인 블록을 i-node(Index Node) 라고 부르며, 파일의 속성 정보와 최대 15개의 블록 주소를 저장할 수 있다.

i-node의 블록 주소 구조

15개가 넘는 블록이 필요한 대용량 파일을 처리하기 위해 다단계 간접 블록 방식을 사용한다.

주소 번호방식설명
1 ~ 12번직접 블록실제 데이터 블록의 주소를 직접 저장
13번단일 간접 블록데이터 주소 목록을 담은 블록의 주소를 저장
14번이중 간접 블록단일 간접 블록의 주소 목록을 담은 블록의 주소를 저장
15번삼중 간접 블록이중 간접 블록의 주소 목록을 담은 블록의 주소를 저장

유닉스 파일 시스템에서는 i-node가 핵심이다.
디렉터리 엔트리에는 i-node 번호파일 이름이 저장된다.

유닉스 파일 시스템 접근 예시

a.sh 파일을 읽는 과정:

  1. 루트 디렉터리의 i-node(i-node 2)에 접근 → 루트 디렉터리가 1번 블록에 저장됨을 확인
  2. 1번 블록에서 home 디렉터리의 i-node 번호(i-node 3) 확인 → 210번 블록에 저장됨을 확인
  3. 210번 블록에서 guest 디렉터리의 i-node 번호(i-node 8) 확인 → 121번 블록에 저장됨을 확인
  4. 121번 블록에서 a.sh의 i-node 번호(i-node 9) 확인
  5. i-node 9에서 실제 데이터 블록 주소 확인 → 99번, 12번, 13번 블록 순서로 읽음

정리

파일 시스템기반 방식핵심 자료구조
FAT연결 할당File Allocation Table
Unix FS색인 할당i-node
profile
기록해야 (살아)남는다 !

0개의 댓글