Welcome to the NACHOS 3.2 module guide. This web-based guide was developed as a fourth year project entitled "Research and Development of an Effective Module Guide with Application to the NACHOS 3.2 Operating System". The communicating of the design of a software system to its users and maintainers is as essential as its development. In many I.T. environments, one group produces the software and another (often separate group) modifies it. By documenting and modularizing the software engineering process, time and money can be saved. Although various papers have been researched and have given this project much direction, the model of choice has been the work of Dr. D.L. Parnas, specifically his work on the module guide for the A-7E Aircraft Operational Flight Program. Among the various alternatives for producing such a document of this nature, Parnas provides a format which is concise and simple to understand.
The operating systems course, currently designated as CS3MH3, involves the study of operating system concepts via the analysis and modification of NACHOS 3.2. This is a sample skeleton of a true operating system written in C++ at the University of California at Berkeley. Each assignment in the course involves adding a major component to the system by implementing concepts such as process synchronization, virtual memory, file systems, networks, etc. The system documentation which is developed here is intended assist students in the comprehension of the structure of NACHOS by allowing them to effectively locate and understand the modules in the NACHOS skeleton (also called the "base-line NACHOS").
One of the most important facets in the development of the system is the idea of modularization. A module is defined as a responsibility as opposed to a sub-program. Modularization is the dividing of a program into segments which define a work assignment as opposed to steps in execution. This process allows for portions of the code to be written without the knowledge of other modules, and for change to be localized to as few modules as possible. The decomposition criteria termed "information hiding" is used to break NACHOS into modules. According to information hiding, each module hides from all other modules a system design decision which is considered likely to change. These details which are likely to change are termed the "secrets" of the respective modules. The interface of a module is the set of assumptions that other programs can make about that module, and the only assumptions which should appear in the interfaces between modules are those which are not likely to change. The guide combines modularization and information hiding with a tree structured hierarchy, where each non-terminal node represents a module that is composed of the modules represented by that node's descendants. Hence, moving from the root of the tree down shows a successively deeper "unveiling" of the modules which come together to form a work assignment. A web-based approach is particularily conducive to this task since the further decompositions can be implemented by a set of hyperlinks and pages which unfold the system to the user. The button below will open, in another browser window, a page containing the tree structured diagram of the guide. The user can "toggle" between the current page and the diagram page while exploring the guide in order to better understand and appreciate nachos on a conceptual level:
It is assumed that the student visiting this site is taking an operating systems course (either at McMaster University or another institution) and has background in ADT's and has programmed in atleast one high level programming language. It is further assumed that the individual has atleast a casual acquaintance with the software engineering process; particularily the issues concerning the "software crisis" the industry has found itself in and the development phases of a software system. It is important to reiterate that this is intended to be a guide only and not a replacement to reading the NACHOS code. In addition, the reader must realise that the information contained herein cannot be a substitute to the expertise of the instructor and teaching assistants of the course; this document is merely to supplement ones existing knowledge and study in the field. Presented as is without any warrantees either explicit or implied.
The guide is successful only in so far as it has assisted the reader in understanding the modular structure of NACHOS. I encourage and enthusiastically anticipate any comments or suggestions (both positive and negative) you may have. Through your input the guide can be made into a document of higher quality and usefullness. Please feel free to send your suggestions to Dan Trbovich trbovidd@mcmaster.ca
On each page is a link to an index with all the files in NACHOS listed alphabetically. Clicking on the file name immediately sends the user to the primary module pertaining to that file.
Now, without further ado, click the link below to enter the module guide for NACHOS: