운영체제#7 파일시스템

성찬홍·2025년 12월 16일

Computer Science

목록 보기
18/22

파일 시스템

파일 시스템

파일과 디렉터리를 관리하는 운영체제 내의 프로그램이다.

파일과 디렉터리를 다루어 주는 프로그램이다.

파일

  • 보조기억장치에 저장된 관련 정보의 집합

  • 의미 있고 관련 있는 정보를 모은 논리적 단위이다.

  • 파일을 이루는 정보

  • 파일을 실행하기 위한 정보 + 부가 정보 ( = 속성, 메타 데이터 )

  • 파일 연산을 위한 시스템 호출

    • 파일 생성
    • 파일 삭제
    • 파일 열기
    • 파일 닫기
    • 파일 읽기
    • 파일 쓰기 등등

디렉터리

  • 윈도우에서는 폴더라도 한다
  • 1단계 디렉터리

  • 여러 계층으로 파일 및 폴더를 관리하는 트리 구조 디렉터리
  • 최상위 디렉터리 (루트 디렉터리,/), 서브 디렉터리
  • 경로
    • 디렉터리를 이용해 파일/디렉터리의 위치 ,나아가 이름까지 특정 지을 수 있는 정보
    • 절대 경로와 상대 경로
      • 절대 경로 : Root 디렉토리로부터의 경로
      • 상대 경로 : 현재 디렉터리에서 자기 자신까지 이르는 경로

  • 디렉터리 엔트리
    • 디렉터리에 포함된 대상의 이름
    • 그 대상이 보조기억장치 내에 저장된 위치(를 유추할 수 있는 정보)

→ 사실 , 많은 운영체제에서는 디렉터리를 그저 ‘ 특별한 형태의 파일’ 정도로 인식한다

파티셔닝

  • 저장 장치의 논리적인 영역을 구획하는 작업
  • 디스크를 논리적인 여러 조각(파티션) 으로 나누는 과정이다.

파티셔닝의 역할

  • 큰 디스크를 구역별로 나눠 각각 독립적인 공간처럼 사용
  • 운영체제 설치, 데이터 분리, 백업 구성 등에 활용
  • 파일 시스템을 만들기 위한 "그릇" 준비 단계

파티션을 나누는 이유

  1. 시스템과 데이터를 분리

    예: C:는 OS, D:는 데이터 저장

  2. 멀티 부팅 환경 구성

    윈도우 + 리눅스 같은 경우

  3. 보안·안정성 향상

    한 파티션이 망가져도 다른 파티션은 안전

  4. 백업 및 복구 용이

포매팅 (Formatting)

  • 파일 시스템을 설정
  • 어떤 방식으로 파일을 관리할지 결정 , 새로운 데이터를 쓸 준비하는 작업
  • 포매팅은 파티션을 운영체제가 파일 저장에 사용할 수 있게 만드는 과정이다.

포매팅의 역할

  • 새로운 파일 시스템(File System) 을 만들어 파일을 관리 가능하게 함
  • 디렉토리 구조 초기화
  • 파일 저장을 위한 메타데이터 생성

파일 할당 방법

  • 포매팅까지 끝난 하드 디스크에 파일을 저장하기
  • 운영체제는 파일/디렉터리를 블록 단위로 읽고 쓴다
    • 즉 , 하나의 파일이 보조기억장치에 저장될 때에는 여러 블록에 걸쳐 저장된다.
  • 파일을 보조기억장치에 할당하는 두 가지 방법 : 연속 할당 , 불연속 할당 2가지가 있다.

연속 할당

  • 이름 그대로 보조기억장치 내 연속적인 블록에 할당하는 것을 말한다.
  • 디렉터리 엔트리 : 파일 이름 & 첫 번째 블록 주소 & 블록 단위 길이 명시

연속 할당의 장점

1) 최고의 접근 속도 (Sequential Access가 매우 빠름)

파일이 연속된 위치에 있으므로 헤드 이동이 거의 없음 → 순차 접근이 빠름

그래서 영상, 큰 파일 등에는 유리함.

2) 탐색 시간(Seek time) + 회전 지연(Rotational latency) 최소화

헤드 이동 없이 바로 이어서 읽기 때문에 I/O 성능이 매우 좋다.

3) 간단한 구현

파일이 몇 번째 블록에서 시작하고(size), 얼마나 길면 되는지만 저장하면 됨 → 메타데이터 관리가 쉬움.

4) 파일 크기가 예측 가능하면 매우 효율적

OS가 미리 정확한 크기를 알고 있으면 가장 이상적인 방식.

예: CD-ROM은 대부분 연속 할당을 사용.

연속 할당의 단점

1) 외부 단편화(External Fragmentation) 발생

2) 파일 크기 확장이 어려움

3) 파일 삭제 시 빈 공간이 조각남 → 단편화 심화

불연속 할당 - 연결 할당

  • 각 블록의 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당
  • 파일을 이루는 데이터 블록을 연결 리스트로 관리
  • 불연속 할당의 일종 : 파일이 여러 블록에 흩어져 저장되어도 무방하다.
  • 디렉터리 엔트리 : 파일 이름 & 첫번째 블록 주소 & 블록 단위의 길

단점

  • 반드시 첫번째 블록부터 하나씩 읽어들여야 한다.
  • 오류 발생시 해당 블록 이후 블록은 접근이 어렵다

불연속 할당 - 색인 할당

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

  • 파일 내 임의의 위치에 접근하기 용이하다

  • 디렉터리 엔트리 : 파일 이름 & 색인 블록 주소

FAT 파일 시스템

  • 디스크의 어느 위치에 파일이 저장되어 있는지 기록하는 테이블 기반 파일 시스템이다.
  • 연결 할당 기반 파일 시스템
  • 연결 할당의 단점을 보완
  • 각 블록에 포함된 다음 블록 주소를 한데 모아 테이블(FAT)로 관리한다

& FAT 파일시스템의 파티션

  • 디렉터리 엔트리

FAT의 기본 구조

디스크는 크게 3부분으로 구성된다.

  1. 부트 영역(Reserved Region)
    • 파일 시스템 정보, 부트 코드 등이 들어 있음
  2. FAT 영역(File Allocation Table)
    • 디스크 블록(클러스터)의 사용 여부 및 연결 정보가 들어있는 테이블
    • 파일이 어떤 클러스터에 저장되어 있는지 FAT에서 확인함
  3. 데이터 영역(Data Region)
    • 실제 파일 데이터가 저장되는 공간
    • FAT의 “지도"를 기반으로 데이터를 찾음

FAT에서 파일 저장 방식 (연결 리스트 방식)

  • FAT 파일 시스템은 파일 데이터를 여러 클러스터에 나눠 저장하고, 각 클러스터 번호를 FAT 테이블이 연결 리스트처럼 연결(linking) 해 놓는다.

ex)

유닉스 파일 시스템

  • 색인 할당 기반 파일 시스템
  • 색인 블록 == i-node
    • 파일의 속성 정보와 15개의 블록 주소 저장 가능

  • i-node 형태

  • 15개 블록 이상을 차지하는 파일은?
    • 블록 주소 중 12개는 직접 블록 주소 저장
      • 직접 블록 : 파일 데이터가 저장된 블록
    • 1번으로 충분하지 않다면, 13번쨰 주소에 단일 간접 블록 주소를 저장한다.
      • 단일 간접 블록 : 파일 데이터를 저장한 블록 주소가 저장된 블록
    • 2번으로 충분하지 않다면, 14번째 주소에 이중 간접 블록 주소를 저장한다.
      • 이중 간접 블록 : 단일 간접 블록들의 주소를 저장하는 블록
    • 3번으로 충분하지 않다면 15번째 주소에 삼중 간접 블록 주소를 저장한다.
      • 삼중 간접 블록 : 이중 간접 블록들의 주소를 저장하는 블록

정리

파일 시스템은 운영체제 내부에서 파일과 디렉터리를 생성·삭제·읽기·쓰기 등으로 관리하는 핵심 프로그램이다. 파일은 보조기억장치에 저장된 의미 있는 정보의 논리적 집합으로, 실제 데이터뿐 아니라 크기·소유자·위치 같은 메타데이터를 함께 가진다. 디렉터리는 이러한 파일들을 계층적 트리 구조로 관리하는 특별한 형태의 파일로, 루트 디렉터리부터 서브 디렉터리까지 경로(절대/상대 경로)를 통해 파일의 위치를 식별한다. 디렉터리 엔트리에는 파일 이름과 실제 저장 위치를 유추할 수 있는 정보가 담겨 있다.

파일 시스템을 사용하기 전에는 파티셔닝과 포매팅 과정이 필요하다. 파티셔닝은 하나의 저장 장치를 여러 논리적 영역으로 나누는 작업으로, 시스템과 데이터 분리, 멀티 부팅, 안정성·백업 편의성 확보에 목적이 있다. 포매팅은 각 파티션에 파일 시스템 구조를 생성해 운영체제가 파일을 저장·관리할 수 있도록 준비하는 단계로, 디렉터리 구조 초기화와 메타데이터 생성이 이루어진다. 이후 운영체제는 파일을 블록 단위로 저장하며, 이때 블록을 어떻게 배치하느냐에 따라 파일 할당 방식이 달라진다.

파일 할당 방식에는 연속 할당과 불연속 할당이 있다. 연속 할당은 파일을 연속된 블록에 저장해 접근 속도가 빠르지만 외부 단편화와 확장성 문제가 있다. 불연속 할당은 파일을 여러 블록에 흩어 저장하는 방식으로, 연결 할당은 블록들이 포인터로 연결되어 순차 접근에 유리하지만 임의 접근이 어렵고, 색인 할당은 색인 블록(i-node)에 모든 블록 주소를 모아 임의 접근이 용이하다. FAT 파일 시스템은 연결 할당을 테이블(FAT)로 관리해 단점을 보완한 구조이며, 유닉스 파일 시스템은 i-node 기반 색인 할당을 사용해 직접·간접 블록 구조로 매우 큰 파일까지 효율적으로 관리한다.

참고
https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

profile
꾸준한 개발자

0개의 댓글