UPDATE: This extension to xv6 was based on the rev-2 sources; more recent sources include paging support by default and thus supercede this version

The xv6 operating system was developed at MIT to support a course on low-level internals of operatin system design. xv6 is based on UNIX V6 and lacks support for modern hardware features commonly taken for granted, notably paging. I added bare-bones paging support to xv6 as part of a guest lecture for an undergraduate operating systems course. The result, xv6p, can be downloaded below.

This is an extremely minimal paging implementation. In particular, all page accounting is handled using only page tables; there is no notion of virtual memory regions or other abstractions that would support efficient allocation of multiple pages or memory mapping of files. In fact, there is no support for demand paging at all. Implementation of demand paging, copy-on-write semantics, and so forth were left as student exercises.


The source is available. See the xv6 web page and course materials for instructions on building the software.


Contact Nathan Rosenblum at UW-Madison Computer Sciences.