12. 파일시스템 이해

  • 파일시스템:

    • 운영체제가 저장매체에 파일을 쓰기위한 알고리즘(자료구조)

    • 참고

      • 파일시스템이 만들어진 이유(블록)

        • 0 과 1의 데이터를 어떻게 저장매체에 저장할까?

          • bit로 관리하기에는 오버헤드가 너무 큼

          • block단위로 관리하기로 함.(보통 4KB)

          • 블록마다 고유번호를 부여해서 관리

      • 파일 시스템이 만들어진 이유(파일)

        • 사용자가 각 블록 고유번호를 관리하기 어려움

          • 추상적(논리적) 객체 필요: 파일

        • 사용자는 파일단위로 관리

          • 각 파일에는 블록단위

      • 파일 시스템이 만들어진 이유(저장방법)

        • 저장매체에 효율적으로 파일을 저장하는 방법

          • 가능한 연속적인 공간에 파일을 저장하는 것이 좋음

          • 외부 단편화, 파일 사이즈 변경 문제로 불연속 공간에 파일 저장 기능지원 필요

            • 블록체인: 블록을 링크드 리스트로 연결

              • 끝에 있는 블록을 찾으려면, 맨 처음 블록부터 주소를 따라가야함.

              • 연속적인 공간이 아니더라도, 연결된 블록을 찾아 사용.

            • 인덱스 블록기법: 각 블록에 대한 위치 정보를 기록하여 한번에 끝 블록을 찾아갈 수 있도록 함.

    • 참고2: 다양한 파일 시스템

      • Windows: FAT, FAT32, NTFS

        • 블록위치를 FAT이라는 자료구조에 기록

      • Linux(Unix): ext2, ext3, ext4

        • 일종의 인덱스 블록 기법인 inode 방식 사용.

  • 파일시스템과 시스템콜

    • 동일한 시스템콜 을 사용해서, 다양한 파일 시스템 지원 가능토록 구현

      • read/write 시스템 콜 호출시, 각 기기 및 파일 시스템에 따라

        실질적인 처리를 담당하는 함수 구현(예: read_spec/write_spec )

      • 파을 실제 어떻게 저장할지는 다를 수 있음

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

  • inode 방식파일시스템

    • 파일 시스템 기본구조

      • 수퍼블록: 파일시스템정보 및 파티션 정보 포함(df로 해당 정보 확인가능)

      • 아이노드 블록: 파일 상세 정보(PCB)

      • 데이터 블록: 실제 데이터(1~4KB)

  • inode와 파일

    • 파일: inode 고유값과 자료구조에 의해 주요 정보관리

      • '파일이름: inode'로 파일이름은 inode 번호와 매칭

      • 파일시스템은 inode를 기반으로 파일 엑세스

      • inode 기반 메타 데이터(상세 정보) 저장

  • inode 구조

    • inode 기반 메타 데이터(파일권한, 소요자정보, 파일사이즈, 생성시간, direct blcks, single indirect, double indirect, triple indirect)

  • 디렉토리 엔트리

    • 리눅스 파일탐색: 예: ~/home/ubuntu/link.txt

      • 각 디렉토리 엔트리(dentry)를 탐색

        • 각 엔트리는 해당 디렉토리 파일/ 디렉토리 정보를 가지고 있음

      • '/'dentry에서 home을 찾고, home에서 ubuntu를 찾고, ubuntu에서 link.txt파일 이름에 해당하는 inode를 얻음.

  • 가상파일 시스템(Virtual File System)

    • Network등 다양한 기기도 동일한 파일 시스템 인터페이스를 통해 관리 가능.

    • 예: read/write 시스템콜 사용하여 각 기기별 read_spec/write_spec 코드 구현

      (운영체제 내부)

  • 참고: 리눅스(유닉스) 운영체제와 가상 파일 시스템

    • 모든 것은 파일이라는 철학을 따름

      • 모든 인터렉션은 파일을 읽고, 쓰는 것처럼 이루어져있음

      • 마우스, 키보드와 같은 모든 디바이스 관련된 기술도 파일과 같이 다루어짐

      • 모든 자원에 대한 추상화 인터페이스로 파일 인터페이스를 활용

Last updated