Operating System Design
Tim B. Brecht
Chemistry and Computer Building, Room 220 (CCB220)
Tuesday 2:30-3:30 pm and Thursday 1:30-2:30 pm
Class Times and Locations:
Tuesday 12:30-2:30 FS 020 and Thursday 12:30-1:30 FS 109
An operating system has four major components:
process management, input/output, memory
management, and the file system. This project-
oriented course puts operating system principles into
action. This course presents a practical approach to
studying implementation aspects of operating
systems. A series of projects is included, making it
possible for students to acquire direct experience in
the design and construction of operating system
components. A student in this course must design and
implement some components of an operating system
and have each interact correctly with existing system
software. The programming environment is C++ under
Unix. At the end of this course, a student will be
able to design and implement the basic components
of operating systems.
1) A course reader available from Department of Computer Science (CCB126).
2) The Nachos source code listing, index, and progamming documentation (CCB126).
Concurrent Systems: An Integrated Approach to Operating Systems,
Database, and Distributed Systems,
Jean Bacon, Addison Wesley, 1992.
In addition you should have (from your 3rd year course) any one of:
a) Operating Systems Concepts, 4th Edition
Silbershatz and Galvin, Addison-Wesley, 1994.
b) Operating Systems Concepts, 3rd Edition,
Silbershatz, Peterson, and Galvin, Addison-Wesley, 1991.
c) Modern Operating Systems,
Tanenbaum, Prentice Hall, 1992
If you are going to buy one of these don't get the 3rd Edition
of Operating Systems Concepts.
Be sure to make use of the books on reserve in the library.
In the past students have found them to be EXTREMELY helpful.
Prerequisites: General prerequisites, including COSC 3321.03,
a good understanding of operating systems concepts,
C and UNIX programming skills.
Words to Remember for this Course
"There are two ways of constructing a software design: one way is to
make it so simple that there are obviously no deficiencies and
the other way is to make it so complicated that there are no
C. A. R. Hoare, ``The Emperor's Old Clothes'', CACM Feb. 1981.
"I hear and I forget, I see and I remember, I do and I understand."
-- Chinese proverb
"Genius is 1% inspiration and 99% perspiration"
-- Thomas Edison
Tips for doing Assignments
External Sources of Information about Nachos
WARNING: These sources of information are
written for students
at a different universities. Marking schemes and even proposed
approaches may not be what I will use or look for.
Use these documents only as a helpful
source of information. I definitely have different views on how
some things should be done.
Thomas Narten's Nachos Roadmap
University of Waterloo
The Course Newsgroup
The course newsgroup is the first place you should look for
course-related announcements and for answers to course-related
questions. If you are registered in 4321 or 5421, you should read the
You may read the course newsgroup using your favorite newsreader.
Alternatively, you may use your WWW browser to read the group by
clicking on the hypertext reference above. Some WWW browsers, like
mosaic, require you to set the environment variable NNTPSERVER before
reading newsgroups. If you have trouble reading the course newsgroup
using your WWW browser, try this
setenv NNTPSERVER blue.cs.yorku.ca
before starting your browser.
Better yet, add this line to your .cshrc file.
The Course Directory
The course directory lives on the Ariel machines and is: /cs/course/4321.
The subdirectories found there are:
bin: Binaries for programs needed
(e.g., gcc-mips - the mips cross compiler.
code: The source code for Nachos.
c++example: The source code and for some
simple C++ examples.
handouts: Postscript for the assignments
man: Man pages for some of the programs found in bin.
(There shouldn't be any need to print this stuff out)
Other Computer Science Courses
Last modified: September 19, 1995
Prev modified: Sept 7, 1995
Tim Brecht email@example.com