728x90
[Pintos] Project 4_File Allocating Table(FAT) vs multi-level index
파일 시스템에서는 1) 자료구조 2) 접근방법 이 중요하다.
데이터 블록의 위치를 표현하는 대표적인 방식은 inode를 이용한 방식 중 하나인 multi-level index와 linked list 개념을 이용한 File allocating table(FAT)가 있다.
File allocating table(FAT)
- 자료구조 : FAT
- 접근방법 : linked list의 table화
- File allocating table은 linked list의 pointer를 table로 따로 관리하고 있다.
- 메모리에 올려 사용 가능히다.
- inode가 없다.
- linked list는 블럭을 읽는 연산이 필요한데 이것은 따로 블럭을 읽을 필요가 없어 빠르다.
- 중요한 정보라 디스크에 두 개 이상 존재(복사본)한다.
- 오버헤드를 줄이기 위해 파일 시스템은 섹터의 묶음인 클러스터 단위로 할당한다.
multi-level index
- 자료구조 : inode + 기타 (super block, bitmap(inode, data))
- 접근방법 : 직, 간접 포인터
- inode를 이용한다.
- file 하나당 inode 하나가 존재
- 대부분의 작은 파일은 바로 접근(직접 포인터) 가끔 큰 파일은 indirect(간접 포인터, 이중, 삼중)를 통해 접근한다.
- 간접 포인터 이용시 disk의 data 영역에 간접 블럭(간접 포인터가 가리키고, 직접 포인터를 가지는)이 존재한다.
- 장점 : 순차적, 무작위 접근 모두 좋으며, 용량 제한이 거의 없다.
- 단점 : 구현이 복잡하고 간접 포인터를 반복하면 느려진다.
참고 자료
http://forensic.korea.ac.kr/DFWIKI/index.php/%EA%B5%AC%EC%A1%B0%EB%B6%84%EC%84%9D/FAT
// 함수 실행 flow
main
- filesys_init
- inode_init
- fat_init
- do_format : FAT 생성 후 disk에 적음 포맷
- fat_create : fat_fs의 FAT를 메모리에 할당, root directory를 disk로
- dir_open_root
- dir_add : . 와 .. 파일 추가
- fat_close : FAT boot sector와 FAT를 memory -> disk
- fat_open : disk로 부터 load
- run_action
- fsutil_put
- filesys_create
- filesys_open
728x90
'정글 2기 > OS 운영체제' 카테고리의 다른 글
[pintos] Project 3_Virtual Memory(가상 메모리)_실행순서 (0) | 2021.10.28 |
---|---|
[pintos] Project 3_Virtual Memory(가상 메모리)_2 (0) | 2021.10.27 |
[pintos] Project 3_Virtual Memory(가상 메모리) (0) | 2021.10.19 |
[three_easy_pieces] 주소 공간의 개념 요약 (0) | 2021.10.15 |
[Pintos] Project 1, 2_Argument parsing, User Program_system call_code analysis (0) | 2021.10.14 |
댓글