NachOS

An extremely simplified instructional operating system used almost exclusively in courses about operating systems. It runs natively on DEC MIPS workstations and little else, although a MIPS simulator is included in the distribution, so it can run on top of most Unix systems, including Linux. It is written in a subset of C++; that is, no polymorphism, C++ streams, operator overloading, or function overloading is used.

NachOS was developed at Berkeley by Wayne Christopher, Steven Procter, and Thomas Anderson. It is available freely on the web from http://www.cs.washington.edu/homes/tom/nachos/

NachOS features simplified versions of: a filesystem, message-passing networking, and multithreading. The code is extremely simple and easy to modify (from first-hand experience). Its also very easy to test new features, since it has several built-in and modifiable self-test functions.

The simulator is deterministic, meaning that the same code will behave identically each time it's run. This makes things easy to debug, but the system as a whole slightly less realistic. However, the networking simulator will drop random packets - the same random packets each time the code is run. The design decisions in NachOS almost all swing on the side of simplicity instead of power or realism. The point of it all, of course, is to show people the basic issues and problems at hand when writing an operating system.

If want to poke around in the guts of an operating system - see how your theories about process scheduling work or something - or if you're the teacher of an OS class, I'd highly recommend you take a look at NachOS. It's written for precisely that purpose, and it's a joy (well, maybe just not a pain) to work with.