Introduction to NachOS- Operating System simulator
You want to build a thread system? Experiment with an OS with memory protection and virtual memory? You want to do that without a lot of rebooting, Bochs/VMWaremagic and writing drivers? Well, then Nachos (Not Another Completely Heuristic Operating System) is for you. Nachos is an Operating System simulator. Hmm... . If you're a bit like me, you'll be wondering what in the world that is.
I have been very interested in OSes for years and have also been an avid OSNews reader, but I had never encountered this term (or Nachos in particular) before.
In Nachos' case Operating System simulator simply means, that you can run an OS (a guest OS) on top of another one (the host OS). If this sounds a little like Bochs/VMWare, then you're right, because it works similar to them. It actually features emulation for
- a CPU (a MIPS CPU)
- a hard drive
- misc. stuff like an interrupt controller, timer,...
which are there to run the Nachos userspace applications. That means that you can actually write programs for Nachos, compile them with a real compiler (an old gcc crosscompiler that produces code for MIPS) and run them. The Nachos kernel instead is compiled to the platform of the Host OS and thus runs natively on the Host OS' CPU.
If you are not excited about this idea (or at least mildly interested), you have to consider what this means. People interested in OSes can easily experiment with high level matters like multiprogramming, VM organization and file systems rather than fiddling around with writing a bootloader (a task which has been tackled thousands of times by aspiring Torvaldses all over the world) first. Not to mention much easier debugging; if you want to output something from inside the Nachos kernel, just use a comfortable printf, instead of having to rely on your own console code (using BIOS, VGA,...) which might not always work reliably. Not to mention that you can easily log the debugging messages of your OS (for later thorough inspection) by simply redirecting stdout of Nachos to a file on your Host OS.
Don't get me wrong, all these low level things are of course interesting too, and fiddling around with bits, device control registers,... are be very educational (to learn how computers really work). But, these tasks can also be very frustrating. With Nachos you can get a somewhat high level overview of the task of writing an OS without all the tedious details. It could be argumented, that the low level stuff helps to weed out the meek, and only leaves the best, hardcore bit fiddlers to OS development. But I think approaches like Nachos make it easier to get the hang of OSes without all the cruft; with the experience from the highlevel view, it might be easier for people to do the low level parts.
1.0 Operating System- Principal and Practice- 2Nd Edition - Anderson