OS

[쉽게 배우는 운영체제] 11. 파일 시스템

noahkim_ 2024. 12. 14. 02:04

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다

 

1. 파일

  • 논리적인 데이터 집합
  • 여러 개의 블록으로 구성됨
  • 제 2 저장장치에 저장됨

 

블록

  • 일정한 크기의 데이터 단위
  • 파일은 블록 단위로 나뉘어 저장됨

 

Unit
  • Memory: byte
  • HDD: Cluster
  • File System: 4KB (ext4, NTFS)

 

속성

파일 헤더
구성 요소 설명
첫 블록 주소 파일의 첫 번째 데이터 블록의 주소를 나타냄
name 파일 이름
type 파일 유형 (예: 텍스트, 이진 등)
size 파일 크기 (바이트 단위)
time 파일 생성, 수정, 접근 시간
location 파일이 저장된 위치 (디스크 상의 물리적 위치)
accessibility 파일의 접근 권한 (읽기, 쓰기, 실행 등)
owner 파일 소유자
  • 파일 테이블에서 관리됨

 

파일 디스크립터

파일 식별자
  • 프로세스의 파일 접근에 사용됨
  • 프로세스마다 파일 디스크립터 테이블을 가지고 있음

 

open() 
  • 시스템 콜을 호출하여 파일 디스크립터를 리턴받음
  • 파일 관리자로부터 부여받음

 

종류

파일 종류 설명 특징
실행 파일 직접 실행될 수 있는 프로그램 코드가 포함된 파일 - 프로세스 생성 및 메모리 로드를 거쳐 실행됨
- 유닉스에서는 접근 권한으로 실행 여부 결정 (확장자로 구분되지 않음)
데이터 파일 실행 파일이 작업하는 데 필요한 데이터를 모아놓은 파일 - 실행 파일이 작업을 수행하는 데 필요한 데이터를 포함
- 연결 프로그램이 해당 파일을 실행하면 자동으로 실행됨
- 고유 헤더를 통해 파일 형식 및 열어야 할 프로그램을 구분 가능
이진 파일 이진 형식으로 인코딩된 데이터 - 텍스트, 이미지, 오디오, 비디오 등 다양한 데이터를 포함할 수 있음
- 컴퓨터가 데이터를 효율적으로 저장하고 처리하기 위해 사용됨
- 포맷 정보(글꼴, 스타일 등)를 포함할 수 있음
텍스트 파일 사람이 읽을 수 있는 문자로 구성된 파일 - 사람이 읽을 수 있는 문자로 구성됨
- 문자 기반 데이터만 포함 (이미지, 비디오 등은 포함되지 않음)
- 코드, 로그 파일, 구성 파일 등에서 흔히 사용됨

 

구조

파일 구조 특징
순차 파일 구조 - 저장 공간에 낭비되는 부분이 없음
- 수정 및 삽입 작업 시 비용이 많이 듦
- 특정 데이터로 이동 시 직접 접근 불가
인덱스 파일 구조
- 순차 파일 구조에 인덱스 테이블을 추가하여 효율성 증가
- 플로피 디스크, CD-ROM, HDD 등에서 사용
직접 파일 구조
- 데이터의 특정 값에 관계를 정의하여 물리 주소로 바로 변환
- 접근이 매우 빠름
- 해시 함수를 사용하여 빠른 데이터 접근 가능

 

2. 파일 시스템

  • 파일을 어떻게 읽고, 쓰고, 관리할 지에 대한 규칙
  • 파티션 당 하나씩 존재

 

목적
  • 사용자로부터 파일 보호
  • 공간을 효율적으로 사용

 

기능
기능 설명
구성
파일 또는 디렉토리로 데이터를 저장하고 조직하는 방식
관리 파일의 생성, 수정, 삭제 등의 작업을 처리
접근
파일에 대한 접근 권한 설정 및 프록시 역할 수행
무결성 보장 파일의 내용이 손상되지 않도록 보호하고 유지
백업 및 복구
데이터의 손실을 방지하기 위한 백업 및 복구 기능
암호화 파일의 데이터를 암호화하여 보안성 강화

 

파티션

클러스터 단위
  • 연속된 섹터 묶음 (물리적으로 연속됨)
  • 섹터 번호를 기준으로 나뉨 (lba 기준)

 

독립적
  • 디스크를 여러 파티션들로 나눌 수 있음
  • 한 파티션당 하나의 파일 시스템만 사용 가능
  • 사용자별 파티션 부여 가능

 

구성
구성 요소 설명
Boot Block
부트스트랩 코드 보관 (OS를 부팅하거나 초기화하기 위한 코드)
Super Block
파일 시스템의 정보 저장 (파일 시스템의 전체적인 구조와 상태 정보)
i-list (inode list) 파일 및 디렉토리의 메타데이터 목록
inode: 파일 또는 디렉토리에 대한 메타데이터 (파일 속성 등)
- inode number 파일 또는 디렉토리를 고유하게 식별하는 번호
- Size 파일의 크기
- Owner 파일의 소유자
- Mode 파일의 접근 권한 (읽기, 쓰기, 실행 권한)
- Timestamp
파일의 생성 시간, 수정 시간 등 타임스탬프 정보
- Hard Link Count 해당 inode를 참조하는 하드 링크의 수
- Data Block Pointers 데이터 블록을 가리키는 포인터

-- Direct
데이터 블록 포인터 (파일의 실제 데이터가 저장된 위치)
-- Indirect
데이터 블록 번호를 저장한 데이터 블록의 포인터들 (single, double, triple)
Directory Blocks
디렉토리의 데이터 블록 (디렉토리 항목이 저장되는 블록)
Data Blocks 파일의 실제 데이터가 저장되는 블록

 

볼륨

  • 여러 섹터나 클러스터들로 이루어진 집합
  • 파티션과 달리, 물리적으로 연속되지 않아도 됨 
    • 논리적으로 하나의 단위처럼 동작

 

3. 디렉토리

  • 관련있는 파일을 하나로 모은 것

 

헤더
  • 디렉터리 이름, 만든 시간, 접근 권한, 블록 위치

 

구조
  • 트리 구조

 

마운트

  • 여러 개의 파티션을 하나의 파티션으로 통합하는 명령

 

mounting point
  • 파티션끼리 연결된 지점
  • 외부 저장장치도 파티션에 붙이고 해제할 수 있음
    • /dev: 외부 저장장치가 마운트된 디렉토리

 

4. 디스크 파일 할당

할당 방식 세부 방식 설명 예시
연속 할당
(Contiguous Allocation)
- 데이터가 연속된 물리적 위치에 할당됩니다.
접근 속도가 빠르고 관리가 용이합니다.
-
불연속 할당
(Non-contiguous Allocation)
연결 할당
(Linked Allocation)
데이터 블록들이 연결 리스트로 관리되며,
각 블록은 다음 블록을 가리키는 포인터를 포함합니다.
FAT(File Allocation Table)
연결 리스트 방식
  인덱스 할당
(Indexed Allocation)
파일에 대한 데이터 블록의 인덱스를 인덱스 블록에 저장
필요한 경우 간접 인덱스 블록을 사용합니다.
-

 

빈 공간 관리

  • 빈 블록의 정보만 모아놓는 빈 공간 리스트를 유지하여 관리