Operating System Design
The load in this course was somewhat reduced last year
and it will remain so this year.
This will be done mainly by making the first assignment
more straightforward and providing more guidance.
This also means that the due date for the first assignment is quite early
(this will hopefully provide slightly more time for remaining assignments).
Tim B. Brecht
Chemistry and Computer Building, Room 220 (CCB220)
Tuesday 1:30-2:30 pm and Thursday 4:00-5:00 pm CCB 220
Class Times and Locations:
Tuesday 2:30-4:00 Thursday 2:30-4:00 222 Stong
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.
General prerequisites, including COSC 3321.03,
a good understanding of operating systems concepts,
C and UNIX programming skills.
The 4321 Course Reader. (From CCB 126)
The Nachos Source Code and Programming Documentation. (From CCB 126)
NOTE: The text book is not stricly required. That is, I'm
not going to be going through each chapter or following
the topics listed. You might think of it as more of a reference.
In addition you may find useful (from your 3rd year course) any one of:
UNIX Internals: The New Frontiers,
Uresh Vahalia, Prentice Hall, 1996.
Operating Systems Concepts, 4th Edition,
Silbershatz and Galvin, Addison-Wesley, 1994.
Concurrent Systems: An Integrated Approach to Operating Systems,
Database, and Distributed Systems,
Jean Bacon, Addison Wesley, 1992.
Modern Operating Systems,
Tanenbaum, Prentice Hall, 1992
Be sure to make use of the books on reserve in the library.
In the past students have found them to be EXTREMELY helpful.
For a description of grades and their meanings see
Letter Grades and Meanings.
This description is taken from the York University Calendar.
Grades will be made available using the courseInfo.
Once they are available you should be able to check your
grade by logging into Ariel and typing:
Grades will probably be computed using the
weighting scheme below:
Assignment 1 5%
Assignment 2 20%
Assignment 3 20%
Assignment 4 20%
Final Exam 35%
Graduate students will not write the final exam but
will instead do a course project.
Assignments will be graded on an A, B, C, scale.
Please read the Course Mechanics document, and the tips for
doing each assignment.
Following the directions for each assignment will help you
to improve your grade.
This is a 4th year class.
You are expected to use good programming and writing practices
when doing assignments. These practices will be considered when
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
Alternate Readings Related to 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.
The Nachos Homepage
Thomas Narten's Nachos Roadmap
Duke University (is in the Nachos Source Code reader)
Operating Systems Course
University of Waterloo
Guide to Reading the Nachos Source Code
University of Chicago
Oregon Graduate Institute
A Quick Tour of Nachos
Nachos Project Documentation
UC Santa Cruz
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 newshub.ccs.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).
(Much of it is included in the Course Source Code Listing).
Tools and Programming
Operating Systems Projects and FAQs
Other Computer Science Courses
September 2, 1997
September 3, 1996