Operating System Design

COSC4321.03, COSC5421.03


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).

Instructor: Tim B. Brecht

Office: Chemistry and Computer Building, Room 220 (CCB220)

Office Hours: 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


Course Description

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.

Prerequisites: General prerequisites, including COSC 3321.03, a good understanding of operating systems concepts, C and UNIX programming skills.

Course Texts:

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.

Useful Texts:
In addition you may find useful (from your 3rd year course) any one of:

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:

     courseInfo 4321

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 assigning grades.

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 obvious deficiencies." 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

Course Handouts

Nachos Assignments


Tips for doing Assignments

Alternate Readings Related to Assignments

Final Exam

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 UC Berkeley

  • 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

  • Nachos Internals Oregon Graduate Institute

  • A Quick Tour of Nachos Stony Brook

  • Nachos Project Documentation UC Santa Cruz

    Nachos Classes

    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 newsgroup regularly.

    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:

    Helpful Information

    (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
    Last modified: September 2, 1997
    Prev modified: September 3, 1996