[운영체제] 파일 시스템 관리

파일 시스템과 저장 장치

1) 파일과 저장 장치

  • 파일 : 정보를 저장하고 관리하는 논리적 단위
  • 컴퓨터 시스템 관점에서 정보를 저장하는 컨테이너

→ 0과 1로 이루어진 데이터 덩어리로 영구 저장 장치나 일시 저장 장치에 저장

  • 운영체제는 파일 생성, 기록, 읽기 모든 과정을 통제

2) 디스크 장치

#1 디스크 매체

  • 정보가 저장되는 원형 판 : 플래터
  • 플래터 한 면당 하나의 헤드를 가지며 플래터에서 정보를 읽고 저장하는 장치

#2 디스크 제어 모듈

  • 프로세서 : 디스크 메체 모듈 제어, 물리적인 디스크 액세스 진행
  • 디스크 캐시 : 호스트와 디스크 매체 모듈 사이의 중간 버퍼 역할

3) 섹터/트랙/실린더/블록

#1 섹터

  • 디스크에 정보가 저장되는 최소 단위

#2 트랙

  • 플래터에 정보가 저장되는 하나의 동심원
  • 여러 개의 섹터들 포함

#3 실린더

  • 같은 반지름을 가진 모든 트랙 집합
  • 8개의 헤드를 가진 디스크 → 8개의 트랙을 묶어 실린더

#4 블록

  • 운영체제가 파일 데이터를 입출력하는 논리적 단위
  • 몇 개의 섹터로 구성

4) 파일 입출력 주소

  • 디스크 장치는 디스크 물리 주소 사용

→ 디스크의 섹터 위치를 나타 내는 주소 = 실린더, 헤드, 섹터 번호로 구성

  • 운영체제는 논리 블록 주소 사용

→ 저장 매체를 1차우너의 연속된 데이터 블록들로 간주

→모든 블록들을 0번부터 시작하는 블록 번호 매김

  • 응용프로그램은 파일 내 바이트 주소 사용

5) 파일 주소 변환

  • 각 장치들이 파일에 대한 주소를 사용하는 법이 다르므로 그에 대한 주소 변환이 필요

#1 파일 주소 변환

  • 파일 내 바이트 주소 → 논리 블록 주소 → CHS 물리 주소
  • 운영체제가 논리 블록 주소로 변환
  • 디스크 장치의 펌웨어를 통해 논리 블록 주소를 CHS 물리 주소로 변환

6) 주소 계층화 의미

  • 각 계층의 독립적 구현이 용이
  • 응용프로그램 개발 시 파일을 바이트 단위로 보고 입출력하는 코드 작성 가능

→ 운영체제에 관계없이 파일 입출력 개발 가능

→ 저장 매체의 종류나 특징, 저장 위치와 무관하게 작성 가능

  • 운영체제 개발 시 저장 매체의 종류나 하드웨어 특징에 관계없이 구현 가능
  • 저장 장치 개발 시 프로그램이나 운영체제 특성과 무관하게 저장 장치 개발 가능

7) 파일 시스템의 정의와 범위

  • 파일 시스템 : 저장 매체에 파일을 생성하고 저장하고 읽고 쓰는 운영체제의 기능 전체
  1. 파일 시스템의 논리 구조 - 수십만개의 파일들을 다루기위한 계층 구조
  2. 저장소에 파일 시스템 구축 - 저장 매체에 파일을 저장하는 방법과 위치 구성
  3. 커널 내 파일 입출력 구현 - 파일을 읽고 쓰는 등의 기능 구현
  4. 응용 프로그램을 위한 시스템 호출 제공

8) 파일 읽기 과정

  • 파일 읽기에서 각 계층의 역할이 구분
  • 운영체제는 응용프로그램이 저장 장치의 종류, 구조, 위치 등 물리적 특성과 무관하게 입출력 지원
  • 디스크 디바이스 드라이버가 파일에 대한 논리적 공간과 물리적 공간 분리
  • 파일 데이터는 여러 번의 복사를 거쳐 이동

→ (디스크 플래터→디스크 캐시→커널의 버퍼 캐시→라이브러리의 버퍼→응용프로그램의 버퍼)

→ 여러 응용프로그램이 동일한 파일을 엑세스하는 경우 효과적

→ 한 프로그램이 순차적으로 파일 데이터를 읽는 경우 효과적

파일 시스템의 논리 구조

1) 파일 시스템 구조

  • 트리 계층 구조로 파일 시스템 구성
  • 디렉토리와 파일의 트리구조

→ 디렉토리 : 서브 디렉토리나 파일들의 목록을 저장한 파일

2) 폴더와 파일의 경로명

  • 디렉토리

→ 논리적 관점에서 여러 파일 혹은 서브 디렉토리를 포함하는 컨테이너로 파일에 대한 경로를 제공

→ 물리적 관점에서 디렉토리도 파일로 구현되며 서브 디렉토리 이름이나 정보 혹은 속성을 저장하는 특별한 파일

  • 파일 이름과 경로명

→ 파일 이름은 단순하게 저장 fun.exe 등

→ 파일의 경로는 루트 디렉토리에서부터 파일에 이르기까지의 계층 경로를 모두 포함

3) 파일 시스템을 다루기 위한 메타 정보

  • 파일 시스템 메타 정보 + 파일 메타 정보 ( 파일 시스템 전체에 관한 정보 + 파일에 관한 정보 )
  • 파일 시스템 메타 정보

→ 파일 시스템 전체 크기와 현재 사용 크기

→ 저장 장치에 구축된 파일 시스템의 비어있는 크기

→ 저장 장치에 들어있는 블록들의 리스트

  • 파일 메타 정보

→ 파일 이름, 파일 크기, 파일이 만들어진 시간, 파일이 수정된 시간, 가장 최근에 액세스한 시간

→ 파일을 만든 사용자, 파일 속성(접근 권한), 파일이 저장된 위치

  • 파일 시스템/파일 메타 정보 저장 위치

→ 파일 시스템 메타 정보 : 저장 매체에 특별한 위치에 저장되어운영체제가 읽기 쓰기 쉽게 함

→ 파일 메타 정보 : 파일 시스템마다 다르며 디렉토리 혹은 저장매체의 특별한 위치에 저장

파일 시스템 구축

1) 파일 시스템 종류와 구현 이슈

  • 파일 시스템 종류

→ FAT (MS-DOS에서 사용, 현재도 사용되고 있음)

→ UFS (Unix에서 사용)

→ ext2, ext3, ext4 (Linux 사용)

→ NTFS (FAT의 개선으로 리눅스에서도 지원가능, Window 3.1부터 지금까지 사용)

  • 파일 시스템 구현 이슈

→ 디스크에 파일 시스템 포맷

→ 파일 블록 할당/배치 관리

→ 파일 블록 위치 관리

2) FAT 파일 시스템

  • MS-DOS의 파일 시스템으로 파일 개수와 크기가 작았던 당시에 적합하도록 설계, 현재에도 진화한 모습으로 사용
  • 파일 시스템 구조

→ 부트 섹터 (운영체제를 적재하고 실행시키는 코드)

→ FAT1, FAT2 (파일 블록들의 할당 테이블, FAT2는 복사본)

→ 루트 디렉토리 (고정 크기로 생성 되는 파일이나 서브 디렉토리 개수 유한)

→ 데이터 블록 (파일 블록이 저장되는 곳, 파일은 블록들로 분할되어 분산 저장)

3) 파일 블록 배치

  • FAT 파일 시스템의 파일 블록 전략
    • 파일 데이터를 블록 단위로 디스크에 분산 저장
    • 파일 메타 데이터는 디렉터리에 저장
    • 저장된 파일 블록들의 위치는 FAT 테이블에 기록
  • FAT 테이블
    • 파일 시스템에서 생성된 모든 파일에 대해 저장된 블록 번호들이 담겨있음
    • FAT 테이블의 항목이 연결 리스트로 연결 → FAT 손상 시 심각한 문제 → FAT2 백업

4) Unix 파일 시스템 구조

  • 부트 블록 : 부팅 시 메모리에 적재되어 실행되는 코드, 운영체제를 적재함
  • 수퍼 블록 : 파일 시스템 메타 정보 저장
  • i-node와 i-node 리스트
    • i-node : 파일당 1개의 i-node 필요, 파일 메타 정보 저장
    • i-node 리스트는 포맷 시 결정 → 파일 생성 시 빈 i-node 할당
  • 데이터 블록들 : 파일과 디렉토리가 저장

5) Unix 파일 시스템의 파일 블록 배치

  • 파일을 블록 단위로 분산 배치
  • i-node에 15개 인덱스를 두고 파일 블록들의 위치 정보를 저장
    • 12개의 직접 인덱스
    • 1개의 간접 인덱스
    • 1개의 2중 간접 인덱스
    • 1개의 3중 간접 인덱스
  • 파일의 i-node찾기 : 파일을 읽고 쓰기 위해 파일 블록의 위치가 저장된 i-node를 찾아야함