CS-537: Introduction to Operating Systems

University of Wisconsin, Madison
Department of Computer Sciences
Spring 2001

Basic Information

Lecture: Tuesday and Thursday at 8:00am - 9:15am (yes, that early)
Discussion: Tuesday at 1:00pm - 2:00pm
Where: Both lecture and discussion are in 1240 CS&S ( timetable entry )

Professor: Remzi Arpaci-Dusseau (remzi@cs)
Office: 7357 Computer Sciences
Office Hours: Tuesday and Thursday at 2-3pm, and by appointment (i.e. send email)

TA: James Nugent (damion@cs)
Office: 1308 Computer Sciences
Office Hours: Monday and Wednesday at 3-4pm
Office Phone: 262-6602


5/24: Final grades are now available. Use this form to check your final scores.

5/24: You can also pick up everything of yours outside of my door.

Old Notes


Welcome to an introduction to operating systems! This course will introduce you to an exciting range of materials from the broad field of operating systems, including basic operating system structure, process and thread synchronization, file systems and storage servers, memory management techniques, process scheduling and resource management, security and a few other "hot" topics. What's particularly interesting about this course is that an operating system is all of that stuff that sits between programs and hardware and makes a complex collection of hardware devices into a useful computing machine. Thus, you get to learn about "how things really work".

This course assumes familiarity with basic computer organization (e.g., processors, memory, and I/O devices as covered in cs354) and data structures (e.g., stacks and hash tables). You will need to be able to program in C (or C++) to perform the assignments in the course. If you don't have much experience in either language, don't worry, we will spend some time covering background, but of course, learning on your own is important and valuable (in this class and in real life).

Mailing Lists

Important announcements will be sent to the class mailing list, so please read your mail frequently (particularly around project time)! You are responsible for the material sent to that list. The mail sent to the class list is also archived. Note that if you are not officially enrolled in the class, we cannot add you to this mailing list because it is automatically generated by the CSL. Talk to them if you are having trouble.

The mailing list for the course is cs537-1list@cs.wisc.edu. Any mail sent to this list will be sent to the entire course. The log of email is available at this url.

The mailing list for project questions is cs537-question@cs.wisc.edu. Any mail sent to this list will go to the professor and TA. During project times, it may be wise to peruse the mail log, which can be found here.


Readings will be assigned in Modern Operating Systems (Second Edition) by Andrew Tanenbaum (Prentice Hall)

A short overview of the C programming environment is now available too in Postscript and PDF.

You will be able to use either C or C++ on the system programming assignments in the class. You may choose whichever you prefer. For those of you who want to learn C++, you might want to check out the notes and exercises for the self-paced course C++ for Java Programmers. The best C book in the world is Kernighan and Ritchie's beautifully sparse The C Programming Language. Also useful is Expert C Programming by Peter Van der Linden. The classic C++ book is the one called The C++ Programming Language by Bjarne Strousup, but this is not terribly good for beginners. I found Advanced C++ Programming Styles and Idioms by James O. Coplien to be a reasonable text on how to use the language. This basic tutorial might also be useful. Finally, if you are interested in mastering the Unix programming environment, a book most people have on their shelves is Advanced Programming in the UNIX Environment by the late, great W. Richard Stevens.

The Sun Answerbook may be useful for online Solaris documentation.

Some other useful C++ links can be found here and here.


As part of the course, you will complete four or five programming assignments. You may perform these projects on the Sun SPARCstation workstations running Solaris in the instructional clusters.

New Unix users and novice Unix users new to the CSL Unix facilities are encouraged to attend an orientation session as early in the semester as possible. You may also purchase a copy of CS 1000 (An Introductory Manual to the Unix Operating System and the Computer Sciences Department's Instructional Computing Environment) at the DoIT Tech Store (first floor of the Computer Sciences and Statistics Building).

The projects are a fundamental part of this course. Although the first assignment will be relatively easy, the remaining projects each require a significant amount of time, so do not procrastinate! It is likely things will take longer than you expect. Do not wait until the day before the assignment is due to start. These assignments should be started well over a week before they are due. All information necessary to complete the assignments will be available from the class web page.

If you plan to perform software or hardware development after graduation, you will need to know how to work well within a group. Therefore, for all projects after the first assignment, we suggest that you form groups of two students. Team members will all receive the same grade on the programming assignments.

All of the assignments will be in C/C++ and not Java. We assume that you have enough programming background that learning the basics of a new language (if it is indeed new to you) will not be difficult. However, we will try to provide some additional material for those of you who need it.

For the projects, you will be graded on how well your implementation works. For these assignments, we will test your program on a suite of input sets while you are present. Your grade will be based on how many of the tests your application passes and how well you are able to answer our questions; we will only briefly examine your code to ensure that you followed the specifications of the assignment. For the other projects, you will be graded on your design, functionality, and documentation. For these assignments, you will need to develop input sets that convince us that your application has the desired behavior. Your grade will be based on how well you describe your implementation and document its functionality. Each assignment will be worth the same number of points, although some will be easier than others.

Questions about projects should be sent to cs537-question@cs. Those queries (and responses) are archived at this url.

Thursday, 02/07
Thursday, 03/07
Thursday, 04/18
Thursday, 05/09
Intro to C and Systems Programming
Building your own Pipe
Scheduling and Memory Management
File Systems
Click here
Click here
Click here
Click here
Click here
Click here


The midterm solution guide is available in Postscript or PDF.

The Exam 1 distribution is also available.

There will be two exams to test your knowledge. The exams will be closed book, and will cover material from class and the textbook. They will be (roughly) equally weighted.

The first midterm will be held Thursday, March 14, in class.

For each exam, a single page "cheat sheet" (8.5 by 11 inches) is allowed, and you can use both sides; exams are otherwise closed-book and closed-note.


Projects are worth 50% your total grade, and the two exams 50%.

Use this form to find out your grades so far in the class.

Tentative Schedule

Here is a tentative schedule of what class will cover:

Date Lecture Reading Other
Jan 22 Intro Chapter 1
Jan 24 Processes Chapter 2
Jan 29 Class cancelled
Jan 31 Synchronization
Feb 5 Locks/Semaphores
Feb 7 Synchronization (cont) Project 1 Due
Feb 12 Classic Problems/Monitors and Messaging
Feb 14 Deadlock Chapter 3 (skim) Project 2 Out
Feb 19 CPU Scheduling Chapter 2.5
Feb 21 Advanced Topics See notes
Feb 26 Memory Allocation Chapter 4
Feb 28 Memory Management
Mar 5 Segments/Pages
Mar 7 More Segments/Pages Project 2 Due
Mar 12 TLBs
Mar 14 Midterm Exam
Mar 19 Virtual Memory
Mar 21 Virtual Memory Project 3 Out
Mar 26 Spring Break
Mar 28 Spring Break
Apr 2 Virtual Memory (Finish)
Apr 4 I/O, Disks Chapter 5
Apr 9 RAID (see paper)
Apr 11 File Systems Chapter 6
Apr 16 File Allocation
Apr 18 FFS Project 3 Due/Project 4 Out
Apr 23 Beyond FFS
Apr 25 Security Chapter 9
Apr 30 Encryption
May 2 Case Studies and Advanced Topics Chapter 12
May 7 (cont)
May 9 (cont) Project 4 Due

Complaints about this page, Mac OS X, or the Lord of the Rings movie, should be sent to Remzi Arpaci-Dusseau.