NACHOS OVERVIEW
What is an Operating System?
The operating system has two main goals, one of which is to act as an interface between the users (and their application programs) of a computer and the computer system itself. The myriad of management responsibilities (including but not limited to processes, file systems, memory, networks, etc) is overwhelming for a human. It was realized eary in the history of computing that there was a need to automate the "house keeping" aspects of the machine so that users could focus on their task at hand. The second goal, as essential as the first, is to provide efficient operation of the computer. When an I/O request is made, the CPU in early machines remained idle as a job was completed. Computer programmers realized that valuable time was lost in waiting for the slower peripheral devices to finish. Additional time could be saved by allowing the CPU to work on other tasks in the interim. NACHOS 3.2 deals extensively with these two properties of an operating system.
The Nachos Directories vs. The Module Guide
The NACHOS code directory reflects the implementation of the operating system and its layout is a consequence of the decisions made by the NACHOS designers at Berkeley. The guide represents conceptually how the operating system is organized, so as to facilitate ones understanding of the system as a whole. Each module contains information about what directory and files pertain to the specific module under consideration. In addition, where relevant, a "Uses relation" is included which provides direct links to other modules in the system which the current module needs to use in order to complete its task. At the topmost-level, or "the first-level decomposition", NACHOS can be seen as divided into the following three general areas of reponsibility: