CMSC 412 - Operating Systems

Fall 2001

Sections 0101 and 0102

General Course Information

Instructor: Bobby Bhattacharjee
4147  A. V. Williams Building
Office Hours: Wednesday, 10:00 a.m. -- 12:00 p.m. 
E-mail is the easiest and fastest way to contact me.
Please put the string "CMSC 412: " somewhere in the subject line of your message
Room and Time: 0102 Classroom Building
Tuesdays and Thursdays, 12:30p.m. -- 1.45 p.m.

Teaching Assistants: Vijay Gopalakrishnan (
Roger Lee (

Course Description

We will cover the basic principles of Operating Systems with a focus on trying to understand how these concepts are applied in modern systems. We will learn about process, I/O, and scheduling in classical and modern Operating Systems. Specifically, we will cover different process management schemes, inter-process communication models, scheduling policies, synchronization primitives, and storage structures. If possible, we'll try to cover the implementation of the networking subsystem implementation inside different OSs. We will selectively implement a number of different parts of an OS, both using user-level thread libraries, and on low-level hardware and hardware emulators. As such, this course will have a significant programming component.


CMSC 311 (or ENEE 350) and CMSC 330.
Experience with some flavor of Unix and programming in C or C++.


The textbook for the course is:

Operating System Concepts, Fifth Edition
    by Abraham Silberschatz and Peter Baer Galvin, John Wiley & Sons. The Wiley corporate link is here .
    The sixth edition of the book is now available; but it came out too late for us to use it this semester.

Here is a list of other books you may find useful:

You do not have to buy any of the books in this list, but you may want to look for them in the library. Also, it should be clear that this course is going to be somewhat biased towards Unix and Unix-like systems such as Linux.


Project 30%
Final Exam 25%
Midterm 15%
Programming Assignments and Homeworks 25%
Class Participation 5%

The grading criteria is subject to change during the semester.

Handouts and Assignments

Assignment 0 [Goodie pack]
Assignment 0'
Assignment 1 [Goodie pack]
Homework 0
Assignment 1'
Assignment 2 [Goodie pack]


Please keep up with and participate in the class newsgroup.   I will use the newsgroup for broadcast announcements and to answer questions that may be interesting to more than one of you.  Further, the newsgroup is the best medium for asking questions about homeworks, for debugging your programming environment, and for posting the latest OS rumor.  Thus, unless it is private, post to the newsgroup before writing e-mail.

Attendance, Group Interactions, and Class Participation

This is a senior-level course; I will not mandate you to come to class (you are still responsible for all the material covered in class).  The class project is a major part of this course, and please be aware that you will be working in groups of four. Lastly, note that 5% of your grade is based upon class participation.   This is to encourage you to voice your ideas in class and to post them to the newsgroup.  Minimally, I must know your name by the end of the term in order for you to get any points for class participation.