본문 바로가기
Computer Science/Operating System

File System의 구조와 작동원리

by Gofo 2021. 6. 21.

File System의 구조

일반적으로 4개의 계층으로 구조되어있다.

  • logical layer
    • logical file system
      • directory, file control block, protection, security 등을 관리한다.
      • file system과 관리된 metadata를 다룬다.
      • FCB(file control block)을 통해서 directory structre를 관리한다.
    • file organization module
      • physical과 logical의 bridge 역할을 한다. 
      • logical block을 physical block으로 translation 한다.
      • free space mangement
  • physical layer
    • 특정 물리적인 file system이 작동한다. 
    • basic file system
      • device driver에 직접 접근한다.
      • device driver 함수를 호출한다.
    • I/O control (device driver)
      • 실제 물리적인 행위를 수행한다.
      • 물리적인 device에 read/write 를 처리한다.
      • interrupt handler를 담당한다.

 

Linux File System

virtual file system은 logical file system과 유사하다.

file organization module이 없다.

 

virtual file system, individual file system, I/O 로 크게 3개의 영역으로 이루어져있다.

 

 


File System 정보의 저장 방식

File system을 동작하는데 필요한 정보들이 저장되는 방식은 2가지가 있다.

  • On-disk structure
  • In-memory structure

 

On-Disk Structure

파일 실행을 위한 모든 정보는 on-disk structure에 존재한다.

 

5가지 정보를 가지고 있다.

  • boot control block : 운영체제 부팅을 위한 정보가 들어있다.
  • partition control block : 특정 파티션에 대한 정보가 들어있다.
  • directory structure
  • FCBs : file 별로 metadata가 담겨있다.
  • data block : 실제 data가 block 별로 저장되어있다.

 

In-Memory Structure

On-disk structure의 일부 정보만을 kernel memory 안으로 가져온 것이다.

 

파일 실행을 위한 모든 정보는 on-disk structure에 존재한다.

그러나 파일 실행을 할 때 마다 on-disk structure에 접근하는 것은 disk access 이므로 속도가 저하된다.

이를 위해서 빈번하게 참조해야 할 정보는 메모리에 가져다놓고 사용한다.

 

  • partition table
  • directory structure
  • system-wide open-file table
    • open되어있는 file들에 대한 FCBs가 존재한다.
    • 모든 파일에 대한 FCB를 가져오지 않는다.
    • 해당 file이 disk의 실제 어느 위치에 있는지도 저장한다.
  • per-process open-file table
    • system-wide open-file table에 있는 FCB의 pointer를 가지고 있다.
    • 어떤 파일을 어떤 프로세스가 open을 했는가를 유지한다.

 


Data Block Allocation

Data block을 저장하는 방법은 3가지가 있다.

  • contiguous allocation
  • non-contiguous allocation
    • linked allocation
    • file allocation table
    • indexed allocation

 

Contiguous Allocation

file data를 disk에 연속되게 저장한다.

 

  • 장점
    • data를 탐색하는 seek time이 짧다.
    • data block이 시작하는 시작 번호와 length만 기억하면 file에 필요한 모든 data block을 찾을 수 있다.
    • file을 찾을 때 random access도 가능하다.
      • => sequential + random access 가능
  • 단점
    • external fragmentation을 초래한다.
      • data block이 연속된 공간을 요구하기 때문이다.
    • file의 size가 커지기가 힘들다.
      • 그 뒤에 저장되어있던 file에 영향을 주면 안되기 때문이다.

 

아래에서 17, 18, 25, 26, 27이 external fragmentation이다.

mail이라는 파일은 27을 넘어서까지 파일이 커질 수 없다.

 

Linked Allocation

linked list와 유사한 구조를 사용한다.

data block 안에 이후의 data block을 가리키는 주소/번호를 저장한다.

 

  • 장점
    • external fragmentation이 없다.
    • file 크기의 변화가 자유롭다.
  • 단점
    • access 시간이 오래 걸린다.
    • pointer 공간으로 인해 공간이 낭비된다.
    • low reliablility : 한 block에서 pointer의 정보를 유실했때 이후의 block들을 접근할 수 없다.

 

File Allocation Table (FAT)

Linked allocation을 변형한 방법이다.

 

link 정보를 각 block이 아닌 한 군데에 모아서 관리한다.

이 장소를 file allcation table이라 한다.

 

각 block은 data만 저장하면 되기 때문에 공간이 낭비되지 않는다.

data block을 탐색할 때만 file allocation table을 참조하면 된다.

FAT 안에서만 탐색하면 되기 때문에 탐색 시간이 짧아진다.

 

FAT 영역에 문제가 생기면 모든 data block의 위치가 유실될 수 있다.

 

Indexed Allocation

파일마다 가지고있는 index block에 block의 link 정보를 담아서 저장한다.

파일은 index block을 가리키면 된다.

 

파일의 크기가 너무 크면 index block를 여러개 사용할 수 있다.

file data block의 위치를 기록하기 위해서 multilevel을 사용한다.

 

 


UNIX

UNIX는 index allocation을 사용한다.

 

UNIX에서 index block을 inode 라고 한다.

index block은 FCB의 역할을 수행하기 때문에 inode를 FCB로 볼 수 있다.

 

On-disk structure

 

Directory

UNIX에는 directory의 개념이 없다.

따라서 directory block에는 directory를 구성하는 정보가 담겨있지만, 일반 파일과 구분하지 않는다.

 

inode 2는 root directory를 의미한다.

 

'Computer Science > Operating System' 카테고리의 다른 글

Multicore  (0) 2021.06.21
File System과 관련된 이슈들  (0) 2021.06.21
File System, Directory  (0) 2021.06.21
File System, File  (0) 2021.06.20
I/O Register, Device Driver  (0) 2021.06.20

댓글