Not Another Completely Heuristic Operating System
Developer | Thomas Anderson at University of Washington |
---|---|
Initial release | 1992 |
Latest release | 4.0 |
Platforms | MIPS architecture |
Kernel type | Monolithic |
License | Berkeley Software Distribution |
Official website | http://www.cs.washington.edu/homes/tom/nachos/ |
![]() | This article includes a list of general references, but it lacks sufficient corresponding inline citations. (November 2009) |
Not Another Completely Heuristic Operating System, or Nachos, is instructional software for teaching undergraduate, and potentially graduate level operating systems courses. It was developed at the University of California, Berkeley, designed by Thomas Anderson, and is used by numerous schools including the University of Southern California, Indian Institute of Technology Kanpur, University of California, Irvine and Aristotle University of Thessaloniki.
Originally written in C++ for MIPS, Nachos runs as a user-process on a host operating system. A MIPS simulator executes the code for any user programs running on top of the Nachos operating system. Ports of the Nachos code exist for a variety of architectures.
In addition to the Nachos code, a number of assignments are provided with the Nachos system. The goal of Nachos is to introduce students to concepts in operating system design and implementation by requiring them to implement significant pieces of functionality within the Nachos system.
Nachos version 3.4 has been the stable, commonly used version of Nachos for many years. Nachos version 4.0 has existed as a beta since approximately 1996.
Implementation
Nachos has various modules implementing the functionality of a basic operating system. The wrapper functions for various system calls of the OS kernel are generally implemented in a manner similar to that of the UNIX system calls
.[1] Various parts of the OS are instantiated as objects using the native code. For example, a class Machine
is used as the master class of the simulated machine.[2] It contains various objects, such as FileSystem
, Processor
, Timer
, etc. which are defined to simulate various hardware aspects.
Successors
As Nachos has not been in active development for a number of years, and possesses a number of recognized flaws (particularly with regards to portability: Nachos relies on MIPS assembly code, and requires porting to run on x86 architecture), successor projects have been initiated. In 2004, Stanford University created Pintos, a Nachos-inspired system written in C and designed to run on actual x86 hardware. In 2000, Dan Hettena at UC Berkeley ported Nachos to Java as Nachos 5.0j, in an effort to make Nachos more portable, more accessible to undergraduates, and less susceptible to subtle bugs in student code that had in earlier versions often dominated student project development time. Another Java-based version was created by Professor Peter Druschel at Rice University. It was later adapted by Professor Eugene Stark at Stony Brook University in 2003 and applied in the Operating System course. At Graz University of Technology (Austria), a system called SWEB ("Schon wieder ein Betriebssystem") has been implemented and is used to teach operating system principles.
External links
- Nachos Home Page
- Original Usenix 1993 paper by Christopher, Procter, and Anderson.
- Extensive writeup on Nachos
- Thomas Narten's Nachos Roadmap
- Nachos for Java Walkthrough
- JNachos Home Page, another Java-based version; ported by Patrick J. McSweeney and WonKyung Park
References
- ^ "Nachos Beginner's Guide, Level 2: System calls and exceptions, Linköping University". Retrieved 2014-09-09.
- ^ "Machine Class at Nachos Documentation, University of California, Berkeley". Retrieved 2014-09-09.