Project 3: Memory management

In this project, you will complete the implementation of memory management in Nachos. For final submission, you will need to provide both your codes as well as codes for testing your impelementation. This project is expected to take substantial amount of time. We strongly encourage you to start working on it ASAP.

Part I (25%) Implement support for multiprogramming. The code we have given you is restricted to running one user process at a time; your job is to make it work for multiple user processes.

Part II (25%) Implement the system calls (exec, join, and exit, also documented in syscall.h).

Part III (25%): Implement software-management of the TLB, with software translation via an inverted page table.

Part IV (25%) Implement demand paging of virtual memory. For this, you will need routines to move a page from disk to memory and from memory to disk. You should use the Nachos stub file system as backing store