CMSC 412


Fall 2004

Catalog Description

A hands-on introduction to operating systems, including topics in: multiprogramming, communication and synchronization, memory management, I/O subsystems, and resource scheduling polices. The laboratory component consists of constructing a small kernel, including functions for device I/O, multi-tasking, and memory management.

CMSC 311, CMSC 330 


An in-depth understanding of how an operating system manages resources in a computer and provides programmers with a machine and device independent interface.  The emphasis of this class will be on operating system concepts. Running examples will be drawn from contemporary OS’s including UNIX, Windows, and Linux.


·         Introduction to Operating Systems (1 week)
·         The Cyclone Programming Language (0.5 weeks)
·         Concurrent Processes (2 weeks)
·         Kernel implementation techniques (1 week)
·         CPU scheduling (1 week)
·         Memory Management (2 weeks)
·         File and I/O Systems (2 weeks)
·         Security and Protection (1 week)
·         Networking and Distributed Systems (2 weeks)
·         Objects and Naming (1 week)
·         Window and Display Services (0.5 weeks)  


   Operating System Concepts  6th Edition or newer,  Siberschatz, Galvin and Gagne, Addison-Wesley 2002.

Programming Projects

Understanding operating system concepts is a hands-on activity.  In this class, students will build a working operating system, starting from a small kernel.  The programming projects will require students to read and understand the provided code, write new modules, and debug the resulting system.  The provided code is written in C, and a small amount of Intel 80x86 assembly language.  The programming assignments will be time consuming and students taking this class should plan their class schedules accordingly.

Projects are due at 6pm on the due date.  However, projects may be turned in late up until 9am the following morning, receiving a 15% penalty.  If you are unable to complete a programming assignment due to illness or family emergency, please see your instructor as soon as possible to make special arrangements.  The instructor reserves the right to fail, regardless of overall numeric score, students who do not submit a good faith attempt to complete all programming assignments.

Cyclone.  Students can program the projects in C, or alternatively use the research programming language Cyclone.  Like Java, Cyclone is type-safe.  This means that certain types of errors, like dereferencing outside the bounds of an array or accessing freed storage, are not possible.  At the same time, Cyclone provides the low-level control needed to program an operating system.  Therefore, using Cyclone means that you will not have to debug these sorts of errors, which can be quite hard to find.  Cyclone also provides a number of advanced features - like pattern matching, exceptions, type inference, and parametric polymorphism - that make the programming task simpler.

At the same time, Cyclone's compiler is a research prototype, so it may have bugs, and its error messages are not always easy to understand.  Therefore, aside from an introductory project to get students acquainted with Cyclone, its use will be optional.  As an extra incentive, students who use Cyclone can receive a small amount of extra credit.  We will spend one or two lectures going over Cyclone in class.


Student grades will be determined as follows:

Programming Assignments (6 total) 40%
Midterms (2 each worth 15%) 30%
Final Exam
Re-grade policy.  All requests to change grading of homework, programming projects, or exams must be submitted in writing (all such requests must be start through a request at, in most cases you will have to then talk to a TA and/or Prof) within one week of when the assignment was made available for pickup. Requests must be specific and explain why you feel your answer deserves additional credit. A request to re-grade an assignment can result in the entire assignment being re-evaluated and as a result the score of any part of the assignment may be increased or lowered as appropriate.
Academic Integrity.  All work that you submit in this course must be your own; unauthorized group efforts will be considered academic dishonesty. See the Undergraduate Catalog for definitions and sanctions. Academic dishonesty is a serious offense that may result in suspension or expulsion from the University. In addition to any other action taken, the grade “XF” denoting “failure due to academic dishonesty” will normally be recorded on the transcripts of students found responsible for acts of academic dishonesty. Sharing of code on programming assignments is a form of academic dishonesty.  Please read this statement for further information.

Responsible Conduct

Cell phones. As a courtesy to your fellow classmates, pagers and cell phones must be off or on vibrate during class.  Having cell phones or pages ring during class can result in points being deducted from your semester grade.

Office Hours and E-mail.  Questions concerning the content of the course or project should, as a general rule, be directed to the newsgroup, csd.cmsc412.  This allows your question to be answered by whoever is monitoring the newsgroup, and the answer to it can benefit all newsgroup readers.  Please do not send e-mail directly to the TAs or Instructors with technical questions.

We (the TAs and professors) are happy to answer questions during office hours and on the newsgroup.  However, office hours and email are not intended as a replacement for lecture. As a result, we will only see people during office hours or respond to your newsgroup questions if you regularly attend class. Due to our own work schedules, we may not respond to electronic questions instantly.  However, we will try to respond to your email by the next regularly scheduled office hour after you send it.  If you cannot make it to scheduled office hours, feel free to make an appointment by e-mail or after class.