CS/OS
25. File System Implementations 1
hjkim0502
2022. 4. 12. 19:17
- 직접 접근이 가능한 매체(예: 디스크)라도 데이터를 관리 방식에 따라 순차 접근만 허용되는 경우도 있다
- 파일들을 디스크에 연속적으로 저장
- 공간 효율보다는 시간 효율이 중요한 상황에서 사용하면 좋다 (realtime, swapping)
- 파일의 부분들을 디스크의 남는 자리에 저장하고, 각 부분에는 다음 부분의 위치를 가리키는 포인터가 있음
- index block을 별도로 두어서 각 파일 부분의 위치정보를 순서대로 담고 있다
- index block을 여러개 연결하거나, 계층을 두어 큰 파일도 처리 가능 -> 공간 효율 ↓
- boot block: 어떤 파일 시스템이든 맨 처음에 위치, 커널의 위치를 찾아 부팅할 수 있게 하는 역할
- super block: 디스크의 빈 block 정보, 할당된 block 정보, inode list와 data block의 영역 정보를 담고 있다
- 파일 하나당 inode 하나를 할당 받아 디렉토리 파일에 저장하지 않은 metadata를 저장한다
- 여러 파일들의 inode가 저장된 공간이 inode list이고, inode 하나는 미리 그 크기가 정해져있다
- 인덱스를 가리키는 indirect pointer를 두어 한정된 inode로 큰 파일의 위치도 잘 가리킬 수 있다
- FAT에 파일의 위치정보만 담고 있다 (나머지는 디렉토리 파일에)
- 첫 block 위치 이후의 순서정보를 가지고 있어 직접 각 block에 실제 접근하지 않더라도 다음 위치 알 수 있음
- linked allocation의 단점 모두 극복 가능
- data block 하나당 1bit로 표현
- 이왕이면 같은 파일의 데이터는 연속적으로 할당하면 좋으므로 연속적인 free block 정보가 중요함
- metadata의 각 요소들은 특정 바이트로 그 크기가 고정되어 있어 탐색을 용이하게 한다
- client와 server가 약속된 NFS 모듈로 네트워크 연결이 될 수 있게 구성되어야 한다
- unified buffer cache는 buffer cache도 page와 동일한 4kb로 block들 관리
- 필요에 따라 각 페이지가 유동적으로 기존의 버퍼 캐시 용도, 페이지 캐시 용도를 겸할 수 있다
- swap area의 여러 block을 모아 4kb 단위로 swap되고, 속도 효율을 위해 여러 page 단위를 한번에 옮기기도 함
출처: https://core.ewha.ac.kr/publicview/C0101020140520134614002164?vmode=f