Xv6 is a “simple Unix-like teaching operating system”. It is based on Sixth Edition Unix and written in ANSI C for x86. Its simplicity coupled with its low code size (around 9000 lines, including comments) make it an excellent place to start learning how operating systems work and how to modify them. As it stands, xv6 runs on real hardware, but only if it is x86 compatible. Porting xv6 to run on the lowRISC platform would
- Demonstrate the viability of lowRISC as a platform for operating systems research
- Provide a fully open, low cost environment for students to learn about operating systems on real hardware
- Help improve the portability and modularity of xv6
This project will address all of these goals by
- Creating a working port of xv6 that runs on lowRISC
- Writing a series of blog posts or a supplement to the existing xv6 documentation that describes the process of porting xv6, changes to the code base to separate architecture dependent and independent code, etc.
I expect the most challenging parts of the port to be those that require software implementations of things x86 handles in hardware, for example the virtual memory implementation.