A computer, without any software, is essentially of no use. It is with its software that it can store, process and retrieve information; display multimedia documents, browse the web and compete against Gary Kasparov. Computer software can be divided into two kinds: system programs - those that manage the operation of the computer itself, and application programs - those that perform the actual work the user wants. The most fundamental system program is the operating system - it controls all the computer's resources and provides the base upon which the application programs can be written. It is a program that acts as an intermediary between a user of a computer and the computer hardware; it controls and coordinates the use of this hardware among its users.
Looking at an operating system from the viewpoint of its components, the major ones are:
Relating the above components to Nachos, the threads and the userprog directories provide a framework for process and memory management; the network directory emulates the networking component of an OS, the machine directory emulates the hardware, and the vm directory lays the foundations of virtual memory.
Before going on a tour of Nachos, remember that from the point of view of UNIX (the OS on which most of you will compile and run Nachos), Nachos is just another process, at par with all the other processes you run - editors, xterms etc. Note that we are running an OS (albeit a simulated one) on top of another OS - this gives the programmers an opportunity to test the OS code before its made available for use by others. So, get started with Nachos. This link provides an overview of the software - its directory structure, links to source code, instructions on how to compile it, and a call graph that shows the execution flow of the program.
Last modified on Thursday, 29-May-97 18:21:41 EDT