pintos-kaist project 4 gitbook ↓
※ 해석 내 멋대로임. 수정 및 보완 부분 있으면 알려주세여
Project 4: File Systems
이전 프로젝트에서는 실제로 파일 시스템이 어떻게 구현되는지에 대한 걱정 없이 광범위하게 파일 시스템을 사용했다. 이번 프로젝트에서는 파일 시스템 구현을 향상시킬 것이다. 코드 수정 및 구현은 주로 filesys 디렉토리에서 할 것이다.
프로젝트 4는 기존에 구현했던 프로젝트 2, 3을 기반으로 구현할 것이고, 당연히 두 프로젝트의 기능들은 파일 시스템 부분에서 작동해야 한다. 또한 VM 기능을 사용하려면 filesys/Make.var 파일을 편집해야 한다. VM을 비활성화하면 extra 부분 점수를 못 받을 것이다.
New code
새로 생성해야 하는 파일들이다. 대부분 filesys 디렉토리에 있고, 아닌 경우 위치를 따로 표시하겠다.
| filesys/fsutil.c
- 커널 커맨드 라인으로부터 접근할 수 있는 파일 시스템의 간단한 유틸리티
| include/filesys/filesys.h, filesys/filesys.c
- 파일 시스템에 대한 최상위 레벨 인터페이스
| include/filesys/directory.h, filesys/directory.c
- 파일 이름을 inode로 변환. 디렉토리 자료 구조는 파일로 저장됨
| include/filesys/inode.h, filesys/inode.c
- 디스크에 있는 파일 데이터 레이아웃을 나타내는 자료구조 관리
| include/filesys/fat.h, filesys/fat.c
- FAT 파일 시스템 관리
| include/filesys/file.h, filesys/file.c
- 파일 reads, writes를 디스크 섹터 reads, writes로 변환
| include/filesys/page_cache.h, filesys/page_cache.c
- VM기능을 활용하는 페이지 캐시 구현. 이 템플릿 사용하는 것 강력 추천. VM플래그 해제 시, 이 템플릿 사용 불가
| include/lib/kernel/bitmap.h, lib/kernel/bitmap.c
- 디스크 파일에서 비트맵을 읽고 쓰는 루틴과 함께 비트맵 자료구조
우리의 파일 시스템은 Unix 기반 인터페이스로 creat, open, close, read, write, lseek, unlink를 위해 Unix man 페이지들을 읽길 바랄 것이다. 우리의 파일 시스템은 이들과 비슷하지만 같지 않은 콜들을 가지고 있다. 파일 시스템은 이러한 콜들을 디스크 작업으로 변환한다.
모든 기본 기능들은 위의 코드에 있다. 그래서 파일 시스템은 이전 프로젝트 때처럼 시작부터 사용할 수 있다. 그러나 제거해야 할 심각한 제한들이 있다.
filesys에서 작업이 진행될 동안, 모든 이전 파트들과 상호작용이 준비되어야 한다.
Testing file system persistence
지금까지 각각의 테스트는 핀토스를 단 한 번 호출했다. 그러나 파일 시스템의 중요한 목적은 부팅부터 다른 것을 할 때까지 데이터에 접근할 수 있도록 하는 것이다. 따라서 파일 시스템 프로젝트 파트의 테스트들은 핀토스를 2회 호출한다. 두 번째 실행은 파일 시스템의 모든 파일과 디렉토리를 단일 파일로 결합한다. 그러고 나서 핀토스 파일 시스템에서 호스트(Unix) 파일 시스템으로 복사한다.
채점 스크립트는 두 번째 실행에서 복사된 파일의 내용을 기반으로 파일 시스템의 정확성을 체크한다. 즉 프로젝트는 파일 시스템이 tar와 복사된 파일을 생성하는 핀토스 유저 프로그램을 충분히 지원하도록 구현될 때까지 어떤 확장된 파일 시스템들을 통과시키지 않을 것이다. tar 프로그램은 매우 까다롭다(확장 가능한 파일과 서브디렉토리 지원 모두 요구). 그래서 많은 작업이 필요할 것이고, 그 때까지는 추출된 파일 시스템에 관한 make check를 무시해도 된다.
파일 시스템 내용을 복사하는 데 사용되는 파열 형식은 표준 Unix "tar" 형식이다. 즉 그들을 검사하기 위해 Unix tar 프로그램을 사용할 수 있다. 테스트를 위한 tar 파일의 이름은 t.tar이다.
'개발자 도전기 > [OS] pintOS' 카테고리의 다른 글
pintOS | Project 4 | Subdirectories and Soft Links (0) | 2021.10.30 |
---|---|
pintOS | Project 4 | Indexed and Extensible Files (0) | 2021.10.29 |
pintOS | Project 3 회고 (0) | 2021.10.28 |
pintOS | Project 3 | 버그잡자 (1) | 2021.10.22 |
pintOS | Project 3 | Swap In/Out (0) | 2021.10.21 |
댓글