[운영체제] 11. 파일 시스템 구현

서요이·2022년 11월 16일
0

운영체제

목록 보기
11/12
post-thumbnail

11. 파일 시스템 구현

Allocation of File Data in Disk

  • Contiguous Allocation
  • Linked Allocation
  • Indexed Allocation

Contiguous Allocation

연속 할당 - 하나의 파일이 디스크 상에서 연속되도록 저장하는 방법

  • 단점
    external fragmentation
    file 크기가 커지는 것에 제약 - 미리 할당 (internal fragmentation)
  • 장점
    Fast I/O - 한번의 seek으로 많은 바이트 transfer → realtime file
    Direct access (=random access) 가능

Linked Allocation

파일이 빈 공간에 아무 곳이나 들어가고 그 다음 파일의 위치 가리킴

  • 장점
    external fragmentation 발생하지 않음
  • 단점
    Direct access 불가능
    Reliability 문제 - 한 sector가 유실되면 다음 부분을 잃어버림
    Pointer를 위한 공간이 block의 일부가 되어 공간 효율성 떨어짐
  • 변형
    File-allocation table (FAT) 파일 시스템
    포인터를 별도의 위치에 보관하여 reliability와 공간 효율성 문제 해결

Indexed Allocation

디렉토리에서 먼저 인덱스 블록을 가리킴
인덱스 블록에 파일의 위치 정보 나열

  • 장점
    external fragmentation 발생하지 않음
    Direct access 가능
  • 단점
    Small file의 경우 공간 낭비
    너무 큰 파일의 경우 하나의 block이 인덱스를 모두 저장하기에 부족함
    - 해결 방안
    linked scheme, multi-level index

Unix File System

  • Boot block - 부팅에 필요한 정보 (bootstrap loader)
  • Super block - 파일 시스템에 관한 총체적인 정보
  • Inode list - 파일 이름을 제외한 파일의 모든 메타 데이터
  • Data block - 파일의 실제 내용(파일 이름 포함)

FAT File System

  • Boot block
  • FAT - 파일의 메타데이터의 일부 (위치정보만)
    배열의 크기 = Data block의 개수
    다음 가리키는 블록의 위치 저장
  • Root directory
  • Data block - 파일의 메타데이터

Free-Space Management

  • Bit map or bit vector
    각 블록별로 bit를 둠 - 비어있는 블록 0, 할당된 블록 1
    부가적인 공간 필요, 연속적인 free block 찾는데 효과적
  • Linked List
    비어있는 블록 linked list로 연결
    공간 낭비 X, 연속적인 가용 공간 찾기 어려움
  • Grouping
    첫 번째 free block이 n개의 pointer 가짐
    n-1개의 포인터는 free data block, 마지막 포인터는 n개의 pointer 가짐
  • Counting
    (first free block, # of contiguous free blocks)

Directory Implementation

  • Linear list
    <file name, file의 metadata>의 list
    구현 간단, 디렉토리 내에 파일이 있는지 찾기 위해서 linear search 필요
  • Hash Table
    linear list + hashing
    hash table - file name을 linear list의 위치로 바꿈
    search time 없앰, collision 발생 가능
  • File metadata의 보관 위치
    디렉토리 내에 직접 보관
    디렉토리에 포인터를 두고 다른 곳에 보관 (inode, FAT)
  • Long file name의 지원
    list에서 각 entry 일반적으로 고정 크기
    file name이 고정 크기 entry 길이보다 길어지는 경우 entry 마지막 부분에 이름 뒷부분이 위치한 곳 포인터 둠

VFS and NFS

  • VFS (Virtual File System)
    서로 다른 다양한 파일 시스템에 동일한 시스템 콜 인터페이스를 통해 접근할 수 있게 해주는 OS layer
  • NFS (Network File System)
    분산 시스템에서 네트워크를 통해 파일 공유하는 대표적인 방법

Page Cache and Buffer Cache

  • Page Cache - Virtual memory 관점에서의 caching
  • Memory-Mapped I/O
  • Buffer Cache - File system 관점에서의 caching
  • Unified Buffer Cache - 기존의 buffer cache가 page cache에 통합됨

0개의 댓글