home tutorials faq contact
CS tutorials Share you information

Introduction to Nachos

Computer software is usually divided into two kinds of programs: system programs - written to run and maintain the computer itself, and application programs - programs which are created and run by the user. System programs that controls the computer, share and coordinates the computers resources between tasks and provides the base upon which the application programs can be written, are called operating systems (OS). An OS is like a link between the user-program and the hardware.

You can divide an OS into the following major topics, from a components' point of view:

  1. Process management: Creation and deletion of applications and system programs, mechanisms to help applications and system programs to communicate, synchronize and schedule.
  2. Main-memory management: All applications and programs need space in the main-memory. The OS is responsible to allocate/deallocate space for a certain applications.
  3. Secondary-storage management: Storage allocation, disk scheduling and free-space management.
  4. File system management: To be able to create/delete files and directories and manipulate them.
  5. Networking: To be able to communicate with other processes (not sharing the same memory or clock) through a network.

Nachos is an educational OS, that gives the user the possibility to implement and manage the components described above. At the beginning, Nachos is working, but is not fully completed. It is your job to implement important functionality.

It is important to notice that Nachos, from UNIX point of view (which you will run Nachos on), is another process like any other UNIX process you will run. In this case we have two OS running on top of each other.

The implementation of functionality is divided into several lab assignments, each dealing with different parts of an OS. The purpose of the assignments is to understand the major parts of an OS-structure and being able to implement some of them.

Basically Nachos consists of a scheduler that schedules different processes and allocates hardware to them. The figure above shows how this works.

Continue to Nachos Components

Nachos
Tutorials
Roadmap
Source Code

Introduction
Threads
Interrupts
Synchronization
System Calls
Exception Handling
Multiprogramming
File System
Networking

Tutorials
Lab 1 Tutorial
Lab 2 Tutorial
Lab 3 Tutorial
Lab 4 Tutorial
Lab 5 Tutorial


© 1999-2008 - All rights reserved. CS tutorials™ and the logo are registered trademarks of CS tutorials.