[Pintos] - File System

Junyeong Fred Kim·2022년 2월 2일
0

운영체제

목록 보기
24/27

File System

이전 프로젝트에서는 실제로 파일 시스템이 어떻게 구현되는지에 대한 걱정 없이 광범위하게 파일 시스템을 사용했다. 이번 프로젝트에서는 파일 시스템 구현을 향상시킬 것이다. 코드 수정 및 구현은 주로 filesys directory에서 할 것.

프로젝트 4는 기존에 구현했던 프로젝트 2, 3을 기반으로 구현할 것이고, 당연히 두 프로젝트의 기능들은 파일 시스템 부분에서 작동해야 한다. 또한 VM 기능을 사용하려면 filesys/Make.var 파일을 편집해야 한다. VM을 비활성화하면 extra 부분 점수를 못 받을 것이다.

New Code

  • 새로운 파일들이 있다.
  • 대부분 filesys directory에 있으며, 아닌 경우 위치가 표시되어있다.

  • filesys/fsutil.c

    커널 커맨드 라인으로부터 접근할 수 있는 파일 시스템의 간단한 유틸리티

  • include/filesys/filesys.h, filesys/filesys.c

    파일 시스템에 대한 최상위 레벨 인터페이스

  • include/filesys/directory.h, filesys/directory.c

    파일 이름을 inode로 변환, 디렉토리 data structure는 파일로 저장된다.

  • include/filesys/inode.h, filesys/inode.c

    디스크에 있는 파일 데이터 레이아웃을 나타내는 data structure 관리

  • 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 flag 해제시, 해당 템플릿 사용 불가.

  • 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이다.

profile
기억보다 기록

0개의 댓글