[운영체제] 파일시스템

Yeongsan Son·2021년 7월 5일
0
post-custom-banner

파일시스템

파일시스템이란 운영체제가 저장매체에 파일을 읽고 쓰기 위한 자료구조 또는 알고리즘을 말한다.


0과 1의 데이터 비트로 저장 매체를 관라히기에는 오버헤드가 너무 크다는 단점때문에

  • 블록 단위로 관리하는 방법 등장
  • 블록마다 고유 번호를 부여해서 관리하는 방법 등장
    • 일반적인 사용자가 관리하기에 어려움
      • 추상적(논리적) 객체 필요: 파일
    • 사용자는 파일 단위로 관리
      • 각 파일에는 블록 단위로 관리

이와같은 해결 방법들이 등장했다.


다음과 같은 고민들로 저장매체에 효율적으로 파일을 저장하는 방법에 대해서

  • 가능한 연속적인 공간에 파일을 저장
  • 외부 단편화, 파일 사이즈 변경 문제로 불연속 공간에 파일 저장 기능 지원 필요
    • 블록 체인: 블록을 링크드 리스토로 연결한 구조
      • 끝에 있는 블록을 찾으려면 첫 블록부터 주소를 조회해야 함
    • 인덱스 블록 기법: 각 블록에 대한 위치 정보를 기록해서, 한번에 끝 블록을 조회

이와 같이 고민하기 시작했다.


우리가 운영체제를 사용하면서 일반적으로 볼 수 있는 파일 시스템 구조는 다음과 같다.

  • Windows: FAT, FAT32, NFTS
    • 블록 위치를 FAT라는 자료 구조에 기록
  • 리눅스(UNIX):ext2, ext3, ext4
    • 인덱스 블록 기법인 inode 방식

파일 시스템과 시스템 콜

운영체제마다 동일한 시스템콜을 사용해 다양한 파일 시스템 지원이 가능하도록 구현했다.

  • read/write 시스템 콜 호출 시, 각 기기 및 파일 시스템에 따라 실질적인 처리를 담당하는 함수를 구현

    • read_spec/wrtie_spec
  • 파일을 저장하는 방법은 다를 수 있음

    • 리눅스의 경우 ext4 외 NTFS, FAT32 파일 시스템 지원

inode 방식의 파일 시스템

inode 방식의 파일 시스템은 세 가지의 블록 타입을 가지고 있다.

  • 수퍼 블록: 파일 시스템 정보/파티션 정보
  • 아이노드 블록: 파일 상세 정보
  • 데이터 블록: 실제 데이터

inode와 파일

파일은 indoe의 고유값과 자료구조에 의해 주요 정보를 관리하는 역할을 한다.

  • '파일이름:indoe'로 파일 이름은 inode 번호와 맹칭
  • 파일 시스템에서는 inode를 기반으로 파일 엑세스
  • inode 기반 메타 데이터 저장

inode 구조

inode 기반 메타 데이터는 Mode(권한), Owner info(소유자), Size(파일 사이즈), Timestamps(시간관련 정보) 등이 있다.

inode 구조와 파일

  • files.txt의 inode 번호 조회
  • 번호에 해당하는 inode 블록에 접근
  • Direct Blocks(12개의 주소 공간)를 통해 데이터를 조회

inode 구조와 파일 데이터

  • Single indirect: 4KB의 특정 블록
    • 1024개의 데이터(4KB)를 가지고 있는 실제 주소 => 4MB
  • Double indirect: 싱글인다이렉트 포인터의 주소를 가진 블록 주소
    • 1024개의 데이터 블록을 가리키는 실제 주소 => 4GB
  • Triple indirect: 더블인다이렉트 포인터의 주소를 가진 블록 주소
    • 1024개의 데이터 블록을 가리키는 실제 주소 => 1024 1024 1024 * 4KB

디렉토리 엔트리

  • 리눅스 파일 탐색
    • ex) -/home/ubuntu/link.txt
    • 각 디렉토리 엔트리(dentry)를 탐색
      • 각 엔트리는 해당 디렉토리 파일과 디렉토리 정보를 보유
    • dentry에서 'home'을 조회 => 'home'에서 'ubuntu' 조회 => 'ubuntu'에서 link.txt 파일 이름에 해당하는 inode 취득

가상 파일 시스템

전통적인 유닉스에서는 파일 시스템 구조를 확장하여, 네트워크와 같은 다른 기기/디바이스에 파일 시스템 구조를 접목시켜 사용할 수 있도록 구조화했다.

  • 유닉스
    • 모든 디바이스를 파일처럼 조작할 수 있음
    • 모든 것은 파일이라는 철학
      • 모든 자원에 대한 추상화 인터페이스로 파일 인터페이스를 활용

이미지출처

profile
매몰되지 않는 개발자가 되자
post-custom-banner

0개의 댓글