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>

Background

New Code 새로 만날 코드

Here are some files that are probably new to you. These are in the filesys directory except where indicated:

<aside> 👉🏻 여러분들에게 새로울 파일들 입니다. 아래의 경우들 외엔 filesys 디렉토리에 있습니다.

</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, and unlink. 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>