In this milestone you need to implement paging of memory. This should
build on the earlier milestone where you implemented a pager. The backing
store for your paging system will be an NFS file called
You should implement a second-chance page-replacement algorithm.
Most of the design in this section will come down to the appropriate choice of data structures. If you haven't already done so, you will need to work out your page table structure. You will also need to decide how to keep track of frames in your swap file. You may want to keep things simple at first by only concentrating on one process, however you should be aware that the next milestone will require you to handle multiple processes.
To demonstrate that your code is indeed using the paging system you should artificially reduce the number of free frames, and run a program which uses a large heap.
You may want to write a command called
thrash which writes data
to a given number of pages and then reads it back (verifying that it has been
read back correctly).