Screen Version
School of Computer Science & Engineering
University of New South Wales

 Advanced Operating Systems 
 COMP9242 2017/S2 

M6: Demand paging

In this milestone you need to implement demand-paging of memory to a backing store. This should build on the earlier milestone where you implemented a pager that used memory to back virtual memory. The backing store for your paging system will be an NFS file called pagefile. You should implement a second-chance page-replacement algorithm.

Design issues

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 pages in your paging 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 and a large stack. You may reduce the number of free frames by modifying ut_find_memory() to return less memory, or by changing the seL4 kernel's view of available memory in kernel/src/plat/imx6/machine/hardware.c

Note: Choose a large difference between RAM and the paging file size, (e.g. at least 10 times the reduced RAM) to ensure you can clearly demonstrate paging extending the available memory to run applications larger than available RAM.

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).

Show Stoppers

Better Solutions

Last modified: 04 Aug 2017.