본문 바로가기

Studying/Operating System

10. File Systems Implementation (2/3) (3/3)

page시스템과 비슷하게 파일도 같은 크기의 조각에 나누어져 저장됨


Contigous Allocation: 같은 파일을 연속적인 조각에 저장 (디렉토리에 파일명, 시작점, 길이를 저장된 정보를 활용해 접근)

빈공간이 생길 수 있음(외부조각 낭비), 파일의 크기가 커질 때 제한이 있음(이러면 내부조각 낭비)

Fast I/O가 가능함, Direct Access 가능


Linked Allocation: 연속적으로 저장되어 있지않고 다음 저장의 위치를 알려줌(디렉토리에 파일명, 시작위치만 저장)

외부조각이 발생하지 않음

직접접근 불가, Reliability 문제, Pointer를 위한 공간 효율이 떨어짐

-> 변형 File-allocation table(FAT) 파일 시스템: 포인터를 별도의 공간에 저장함


Indexed Allocation: 디렉토리에 index블록을 저장하여, 해당 블록에 파일의 위치들을 저장함)

파일이 작을 경우 공간 낭비(실제로 많은 file들이 small)

너무 큰 파일의 경우에, 하나의 index블록으로 모두 표현하는 것이 불가

->linked scheme이나 multi-level index 사용하여 해결


Unix의 파일시스템

Boot block: 모든 운영체제가 공통적으로 맨 처음 Boot block이다. (부팅에 필요한 정보)

Super block: 파일 시스템에 관한 총체적인 정보를 담고 있다. (어디가 파일이 사용되는 지, Inode가 어딘 지 등)

Inode list: 파일의 이름을 제외한 파일의 모든 메타 데이터를 저장

inode, oweners, timestamps, size block, count, direct blocks, single indirect, double indirect, triple indirect

Data block: 파일의 실제 내용을 보관

-> diretcory file: 파일이름, inode 번호을 저장하고 있음

-> Indexed Allocation을 활용함


FAT File System

Boot block

FAT: 모든 Data 블록의 다음 블록을 저장해놓음

-> 특정 sector가 문제가 생겨서 파일들에 문제가 생기는 것을 방지할 수 있음

Root directory

Data block


Free-space Management

Bit map or bit vector

bit[i] -> 0이면 block[i] free, 1이면 block[i] occupied

Linked list: 비어있는 블록끼리 linked list로 연결해서 관리

Grouping: Linked list의 변형으로 Linked Allocation처럼 이용하는 것 (첫 free block이 n개의 pointer를 가짐 -> 이것을 반복)

Counting: 프로그램들이 종종 여러개의 연속적인 block을 할당하고 반납한다는 성질에 착안


Directory Implementation

Linear list: 파일의 이름과 file의 metatable을 저장 (크기를 동일하게 하여 일정간격으로 linear search를 함)

Hash Table: 파일의 이름을 hash값 변환하고 file의 metadata와 같이 저장한다.


VFS and NFS

Virtual File System: 서로 다른 File 시스템에서 동일한 시스템 콜 인터페이스를 통해 접근할 수 있게 해줌

Network File System: 분산 시스템에서 네트워크를 통해 파일이 공유하는 방법


Page cache and Buffer cache

Page Cache: Virtual memory의 paging system에서 사용하는 page frame을 caching의 관점에서 설명하는 용어 (메모리)

Memory-mapped I/O: File의 일부를 virtual memory에 mapping 시킴

Buffer Cache: 파일 시스템을 통한 I/O연산은 메모리의 특정 영역인 buffer cache 사용 (파일)

Unified Buffer Cache: 최근 OS에서는 buffer cache가 page cache에 통합됨

->buffer cache의 단위도 page처럼 같은 크기로 설정

쓰지 않으면, memoried-mapped I/O는 page cache를 거치고 buffer cache로 가는데

사용 한다면 memoried-mapped I/O와 I/O using read() and write() 모두 buffer cache(=page cache)를 거친다.

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

11. Disk Management and Scheduling  (0) 2018.07.15
10. File Systems (1/3)  (0) 2018.07.14
09. Virtual Memory (2/2)  (0) 2018.07.12
09. Virtual Memory (1/2)  (0) 2018.07.11
08. Memory Management (4/4)  (0) 2018.07.10