OS

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

noahkim_ 2024. 12. 14. 02:04

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

 

1. 파일

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

 

종류

실행 파일
  • 직접 실행될 수 있는 프로그램 코드가 포함된 파일
  • 프로세스 생성 및 메모리 로드를 거쳐 실행됨
  • 유닉스에서는 접근 권한으로 실행 파 여부가 결정됨 (확장자로 구분 X )

 

데이터 파일
  • 실행 파일이 작업하는데 필요한 데이터를 모아놓은 파일
  • 연결 프로그램
    • 해당 파일을 실행하면 적절한 실행 파일을 통해 자동으로 실행됨
  • 고유 헤더
    • 해당 파일이 어떤 형식인지
    • 어떤 프로그램으로 열어야 하는지
    • 파일을 복구하는데 유용하게 사용됨

 

이진 파일
  • 이진 형식으로 인코딩된 데이터
    • 텍스트 뿐만 아니라 이미지, 오디오, 비디오 등의 다양한 데이터가 포함될 수 있음
  • 컴퓨터가 데이터를 효율적으로 저장하고 처리하기 위해 사용됨
  • 포맷 정보를 가질 수 있음 (글꼴, 스타일 등)

 

텍스트 파일
  • 사람이 읽을 수 있는 문자로 구성된 파일

 

속성

파일 헤더
  • 구성
    • 첫 블록 주소
    • 속성: name, type, size, time, location, accessibility, owner
  • 파일 테이블에서 관리됨

 

구조

순차 파일 구조
  • 기본 구조
  • 저장 공간에 낭비되는 부분 X
  • 수정 및 삽입 작업 시 비용이 많이 듬
  • 특정 데이터로 이동 시 직접 접근 불가

 

인덱스 파일 구조
  • 순차 파일 구조에 인덱스 테이블을 추가
  • 플로피 디스크, CD-ROM, HDD

 

직접 파일 구조
  • 데이터의 특정 값에 어떤 관계를 정의하여 물리주소로 바로 변환하는 파일 구조
  • 접근이 매우 빠름
  • 해시 함수

 

파일 디스크립터

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

 

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

 

2. 파일 시스템

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

 

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

 

기능
  • 구성: 파일 or 디렉토리
  • 관리: 생성, 수정, 삭제, 
  • 접근: 접근 권한, 프록시 역할
  • 무결성 보장: 파일 내용이 손상되지 않도록 보장
  • 백업 및 복구
  • 암호화

 

파일 테이블

  • 해당 파일이 시작하는 블록 주소를 가짐

 

블록

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

 

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

 

파티션

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

 

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

 

구성
  • Boot Block: 부트스트랩 코드 보관 (OS를 부팅하거나 초기화하기 위한 코드)
  • Super Block: 파일 시스템 정보 보관
  • i-list (inode list)
    • inode: 파일 or 디렉토리에 대한 메타데이터
      • inode number, size, owner, mode, timestamp, hard link count
      • data block pointers
        • direct: 데이터 블록 포인터
        • indirect: 데이터 블록 번호를 저장한 데이터 블록의 포인터들 (single, double, triple)
  • directory blocks and data blocks

 

볼륨

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

 

3. 디렉토리

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

 

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

 

구조
  • 트리 구조

 

마운트

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

 

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

 

4. 디스크 파일 할당

연속 할당

  • 블록을 물리적으로 연속적으로 배열하는 방식
  • 실제로는 쓰이지 않음 (낭비 심함)

 

불연속 할당

  • 비어있는 블록에 데이터를 분산하여 저장
  • 파일 시스템이 블록의 할당을 관리함

 

연결 할당
  • 파일에 속한 데이터를 연결 리스트로 관리
  • FAT
    • 파티션 전체 블록을 가진 테이블
    • 하나의 파티션이 사용할 수 있는 디스크 용량이 테이블의 주소 크기로 제한됨

 

인덱스 할당
  • 데이터의 인덱스를 담고 있는 인덱스 블록을 연결
  • 테이블이 포화될 경우, 간접 인덱스 블록을 사용

 

빈 공간 관리

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