Recoverable Virtual Memory

In this project you will implement a recoverable virtual memory system with an interface similar to the one provided by the Coda file system.  You should use keep two logs, an undo log in memory and a redo log on disk as described in the LRVM paper.



  1. Gain access to a well-maintained linux machine.  If you do not have this already, then it is recommended that you follow the instructions for downloading and installing VirtualBox and the AOS Virtual Image.

  2. Download the starter source code rvm.tar.gz.


For this and all projects, students must work on their own.


The API is specified in the file rvm.h.  Your implementation does not have to be efficient.  Log truncation can be done on map (this is the laziest strategy), and you may assume that the number of segments is small enough that sequential search is acceptable.

Test Cases

In order to get a feel for how the above API is used, you should write some test cases that use the above functions and check whether they worked correctly. To implement your test cases, you will probably want to use multiple processes, started either with fork() or by starting programs from a shell script. You may also want to simulate crashes within the program; the exit() and abort() functions are useful for this.


Your grade will be determined by your implementation in the files rvm.c and rvm.h.