In the previous two assignments, you made extensive use of a file system without actually worrying about how it was implemented underneath. For this last assignment, you will improve the implementation of the file system. You will be working primarily in the
filesys
directory.
<aside> <img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8c5d0660-8016-49f8-947b-05d691fd4c39/moon_3.png" alt="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8c5d0660-8016-49f8-947b-05d691fd4c39/moon_3.png" width="40px" />
이전의 두 과제에서는 파일 시스템이 내부적으로 어떻게 구현되어 있는지에 대해 신경쓰지 않고 광범위하게 사용했었습니다. 이번 마지막 과제에서는, 당신은 파일 시스템의 구현을 발전시키게 될 겁니다. filesys
디렉토리에서 주로 작업하게 될 겁니다.
</aside>
You may build project 4 on top of project 2 or project 3. In either case, all of the functionality needed for project 2 must work in your filesys submission. If you build on project 3, then all of the project 3 functionality must work also, and you will need to edit filesys/Make.vars
to enable VM functionality. We will deduct 10% credit if you disable the VM. Note that the page cache (extra credit) requires the VM functionality.
<aside>
🐕 프로젝트2 또는 프로젝트3를 바탕으로 프로젝트4를 진행하면 됩니다. 각각의 경우, 프로젝트2에서 구현했던 모든 기능이 filesys를 진행하면서 똑같이 작동해야 합니다. 만약, 프로젝트 3을 바탕으로 진행했다면 프로젝트3에서 구현한 기능 역시 작동해야 합니다. 또한 VM 기능을 활성화시키기 위해서는 filesys/Make.vars
을 수정해야 합니다. VM 기능이 비활성화시켰다면 10% 감점할 예정입니다. 페이지 캐시를 구현하기 위해선 VM기능이 필요합니다.
</aside>
Here are some files that are probably new to you. These are in the
filesys
directory except where indicated:
<aside>
👉🏻 여러분들에게 새로울 파일들 입니다. 아래의 경우들 외엔 filesys
디렉토리에 있습니다.
</aside>
filesys/fsutil.c
Simple utilities for the file system that are accessible from the kernel command line.
<aside> 👉🏻 커널 커맨드 라인에서 접근할 수 있는 파일시스템을 위한 간단한 유틸리티들이 있습니다.
</aside>
include/filesys/filesys.h
, filesys/filesys.c
Top-level interface to the file system. See Using the File System, for an introduction.
<aside> 🐕 파일 시스템에 대한 최상위 인터페이스가 있습니다. 들어가기 전, 파일 시스템 사용 방법을 보실 수 있습니다.
</aside>
include/filesys/directory.h
, filesys/directory.c
Translates file names to inodes. The directory data structure is stored as a file.
<aside> 👉🏻 파일 이름을 inode로 변환해줍니다. 디렉토리 자료구조는 파일로서 저장되어 있습니다.
</aside>
include/filesys/inode.h
, filesys/inode.c
Manages the data structure representing the layout of a files data on disk.
<aside> 👉🏻 디스크에 있는 파일의 레이아웃을 보여주는 자료구조를 관리합니다.
</aside>
include/filesys/fat.h
, filesys/fat.c
Manage the FAT filesystem.
<aside> 👉🏻
FAT 파일시스템을 관리합니다.
</aside>
include/filesys/file.h
, filesys/file.c
Translates file reads and writes to disk sector reads and writes.
<aside> 👉🏻 파일 read와 write를 디스크 섹터 read와 write로 변환 합니다.
</aside>
include/filesys/page_cache.h
, filesys/page_cache.c
Page cache implementation that utilize vm functionalities. We strongly recommend you to use this template. But you might write down your own codes. Note that if you turn off the vm flag, you cannot use this template.
<aside> 👉🏻 가상 메모리 기능을 이용하는 페이지 캐시 구현입니다. 이 템플릿을 이용하길 매우 추천드립니다. 여러분만의 코드를 쓰실수도 있긴 합니다. vm flag를 끈다면 이 템플릿을 사용할 수 없다는 것을 알아두세요.
</aside>
include/lib/kernel/bitmap.h
, lib/kernel/bitmap.c
A bitmap data structure along with routines for reading and writing the bitmap to disk files.
<aside> 👉🏻 비트맵을 디스크 파일에다가 read, write 하는 루틴이 있는 비트맵 자료구조가 있습니다.
</aside>
Our file system has a Unix-like interface, so you may also wish to read the Unix man pages for
creat, open, close, read, write, lseek
, andunlink
. Our file system has calls that are similar, but not identical, to these. The file system translates these calls into disk operations.
<aside>
👉🏻 우리의 파일시스템은 Unix와 비슷한 인터페이스입니다. 따라서 create, open, close, read, write, lseek, unlink
함수들에 대한 Unix man 페이지를 읽어 보길 권합니다. 우리의 파일 시스템은 이것들과 동일하지는 않지만 비슷한 함수들을 갖고 있습니다. 파일 시스템은 이런 함수들로 디스크를 동작시킵니다.
역자주) Unix man pages
: 터미널에 man 커맨드를 입력하면 Unix 함수들에 대한 메뉴얼 페이지를 볼 수 있습니다.
예시 - man mmap
</aside>
All the basic functionality is there in the code above, so that the file system is usable from the start, as you've seen in the previous two projects. However, it has severe limitations which you will remove.
<aside> 👉🏻 모든 기본적인 기능이 위의 코드에 있습니다. 그래서 여러분이 앞의 두 프로젝트를 하며 보신 것 처럼 시작부터 파일시스템이 사용가능 했습니다. 하지만 심각한 제한사항들이 있고 여러분이 이제 그 제한들을 없애게 될 것 입니다.
</aside>