Always Be Wise

Project_4 : File System - Introduction 본문

카이스트 정글 - 프로젝트/Pintos

Project_4 : File System - Introduction

bewisesh91 2022. 1. 29. 17:44
728x90

이전까지는 파일 시스템의 구현 방식에 대해 고려하지 않고 파일 시스템을 사용해왔다.

이번 프로젝트에서는 기존 파일 시스템의 구현을 개선할 것이다. 

Background

New Code

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

파일 읽기와 쓰기를 디스크 섹터 읽기와 쓰기로 변환한다.

include/filesys/page_cache.h
filesys/page_cache.c

VM 기능을 활용하는 페이지 캐시 구현 템플릿이다. VM flag를 해제하면, 해당 템플릿을 사용할 수 없다.

include/lib/kernel/bitmap.h
lib/kernel/bitmap.c

디스크 파일에 비트맵을 읽고 쓰는 루틴과 비트맵 데이터 구조이다.

 

Pintos 파일 시스템은 Unix와 유사한 인터페이스를 가지고 있다. 

creat, open, close, read, write, lseek, unlink 구현을 위해 Unix man 페이지를 참고해라.

Pintos 파일 시스템과유사하지만 완전히 동일하지는 않은 호출들을 확인할 수 있을 것이다.

파일 시스템은 이러한 호출을 디스크 작업으로 변환한다.

 

모든 기본 기능들이 위의 코드에 구현되어 있으므로, 처음부터 파일 시스템을 사용할 수 있다.

그러나 제거해야할 심각한 제한 사항들이 있다.

대부분의 작업이 filesys에서 이루어지지만 이전 작업들과 상호작용이 이루어져야 한다.

Testing File System Persistence

지금까지 각각의 테스트는 핀토스를 한 번만 호출했다.

그러나 파일 시스템의 중요한 목적은 한 부팅에서 다른 부팅시에도 데이터가 여전히 접근 가능한 상태가 되도록 보장하는 것이다.

grading script는 두 번째 부팅시에 복사된 파일 내용을 기반으로 파일 시스템의 정확성을 확인한다.

Pintos 사용자 프로그램인 tar를 지원할 수 있을 만큼 파일 시스템이 구현될 때까지 확장 파일 시스템 테스트를 통과하지 못할 것이다.

tar 프로그램은 확장 가능한 파일과, 하위 디렉터리 지원이 모두 필요하기에 구현이 상당히 까다롭다.

 

Comments