IT/컴퓨터구조와 운영체제

[File System] VSFS(very simple file system)

kykyky 2024. 6. 5. 12:43

overall organization

▶block

: 위 사진에서 각각의 작은 네모 하나. 4kB 

 

▶Data region

: user data 저장 

 

▶Inode

: 파일의 주요 metadata 정보 (파일이 나뉘어있는 data block이 어떤건지, 파일 크기, 소유자, 파일에 대한 접근 권한과 접근/수정 시간 등)를 track하기 위해 이들이 저장된 곳

- inode number에 의해 위치가 계산되어 refer

- 위 사진의 Inode table에서 주황색 네모 하나. 256B

- 위 사진 기준으로는 Inode가 총 80개이므로, 가능한 최대 파일 개수도 80개이다.

 

▶Inodes(Inode table)

: Inode의 array임

 

▶Bitmap

: Inode나 Data block의 free(0) / allocated(1) 여부를 track하기 위함 

- inode bitmap (i): for inode table

- data bitmap (d): for data region

 

▶Super block

: The number of inodes, begin location of inode table. etc 등을 포함하고 있어서,

file system을 mount할 때, OS는 가장 먼저 superblock을 read함으로써 다양한 정보를 초기화한다.

 

Allocation

위의 block들에 file들을 어떤 방식으로 저장할 것인가?

그중 한가지 방식만 알아보겠다.

 

Indexed allocation의 Multi-level indexing

▶Indexed allocation

모든 파일들은 자신의 "index block"을 가지고 있음

index block: 해당 파일이 차지하는 모든 block에 대한 모든 pointer가 들어있음

   => i번째 entry ㅡ i번째 파일 block의 pointer

 

▶위의 변형인, Multi-level indexing

파일이 너무 크면?

하나의 index block에 모든 pointer가 들어가기엔 부족함

따라서,

1st level index block는 2nd level index block의 pointer,

2nd는 3rd의 ...  .. .,

....,

마지막 index block은 실제 파일 block의 pointer이게 하면,

더 많은 data block을 point할 수 있게 되어, 파일 한 개의 최대 크기가 늘어남   

 

Caching

 

Static partitioning

: DRAM 내에 virtual memory와 buffer cache의 할당 비율이 고정적

 

- buffer cache: LRU를 기준으로, 자주 쓰이는 block을 담아둠으로써 I/O 횟수 줄임 

- 낭비적임: 만약 어느 시점에는 buffer cache가 DRAM의 10%씩이나 필요하지 않다면, 사용되지 않은 page는 다른 데에도 못쓰이고 그대로 낭비됨

 

Dynamic partitioning

: DRAM 내에 virtual memory와 buffer cache가 통합되어 할당되고, 둘 중 누가 더 메모리를 요하는지에 따라 할당 비율이 유동적임  

 

- 오늘날 사용되는 방식.