CS-537: Introduction to Operating Systems

University of Wisconsin, Madison
Department of Computer Sciences
Fall 2005

Basic Information

Click here for basic course information (when and where lectures are, who is teaching the course, etc.)

Class News

1/3: Final grades should be available through the registrar. Also, if you wish to check your P3 and P4 grades, look in your handin directory. If you think your P3 or P4 score is wrong, please feel free to check out
the tests in ~remzi/public/P3-Tests and ~remzi/public/P4-Tests. If you think you have lost a lot of points due to some small mistake, then document the code changes required to fix the problem and send me (remzi) email.

12/21: Here are the solutions to the practice exams: Memory and File Systems (only the last question has the answer).

12/21: The final exam is Thursday (12/22) at 10:05 am in room CS 1221. Good luck!

12/14: We will have a review for the final exam on Tuesday (12/20) from 10 to 11 in CS 1325.

12/13: Discussion notes from 12/12 available here. Type 'tar xvf disc.12.12.05.tar' to unpack it, and then read the README file.

12/12: We have two practice exams for the final: the first is on memory and the second is on file systems.

12/9: Discussion notes from 12/8 available here. Type 'tar xvf disc.12.08.05.tar' to unpack it, and then read the README file.

12/5: Discussion notes from 12/5 available here. Type 'tar xvf disc.12.05.05.tar' to unpack it, and then read the README file.

12/1: Project 4 is now available.

Old notes: Available here.


Welcome to your first course in 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 and concurrency, file systems and storage servers, memory management techniques, process scheduling and resource management, system security, and a few other "hot" topics.

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 (not C++, and definitely Java) to perform the assignments in the course. If you don't have much experience in this language, don't worry (too much), 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). For those of you who are new to C (e.g., you just know Java), realize this is an opportunity to broaden your skill set! (i.e., stop complaining).

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 the class list is automatically generated based on who is enrolled in the class -- hence, sign up and start getting the emails!

However, you can check the archives to see if you've missed anything.

There is also a project question mailing list (537proj@cs.wisc.edu). Check the 537proj@cs.wisc.edu mailing list archive for Q and A about the projects.


We recommend coming to class and following the class notes (which are available below online). Read the book in the background (e.g., after we cover a topic in class), both to fill in your knowledge, as well as to get a different perspective on operating systems.

You should have ONE of the following two textbooks:

Operating Systems (3rd Edition)
Deitel, Deitel, Choffnes
ISBN: 0-13-182827-4
Pearson, Prentice Hall

Operating System Concepts (6th or 7th Edition)
Silberschatz, Galvin, Gagne
ISBN: 0-471-25060-0

You should also own:
The C Programming Language (2nd edition)
Kernighan and Ritchie
ISBN: 0-13-110362-8 (paperback)
Prentice Hall

You must use C on the system programming assignments in the class. The best C book in the world is Kernighan and Ritchie's beautifully sparse The C Programming Language. It is worth purchasing. Also useful is Expert C Programming by Peter Van der Linden. Finally, if you are interested in mastering the Unix programming environment, the absolute bible is Advanced Programming in the UNIX Environment by the late, great W. Richard Stevens. Buy this book too; it is worth every penny.

Here is a short, free, and incomplete overview of the C programming environment by y.t., available for your viewing convenience in both Postscript and PDF.

It would also be useful to figure out how to use the debugger, gdb. Here is a link to a short tutorial -- there are others on the web too. Learning how to use such tools is a good idea.


Project 1 (due Thursday, September 22 at 9pm).
Project 2 (due Thursday, October 20 at 9pm).
Project 3 (due Tuesday, November 22 at 10pm).
Project 4 (due Thursday, December 15, at 10pm).

As part of the course, you will complete four or five programming assignments. You may perform these projects on PCs running the Linux operating system.

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, ideally right when they are handed out. All information necessary to complete the assignments will be available from the class web page.

As stated above, all of the assignments will be in 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. C is actually quite similar to Java, as those who invented Java were C experts.

For the projects, you will be graded on how well your implementation works. We will test your program on a suite of input sets. Your grade will be based on how many of the tests your application passes and how well you are able to answer our questions about the program; we will only briefly examine your code to ensure that you followed the specifications of the assignment.

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


There will be some exams to test your knowledge. The exams will be closed book, and will cover material from class and the projects.

The first midterm will be held October 25th 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 exams are worth the other 50%.

Tentative Schedule

Here is a tentative schedule of what class will cover, including links to class notes. It might be worth printing out the class notes before class and bringing them with you.

  Tuesday (Sil-6, Sil-7, Deitel)   Thursday (Sil-6, Sil-7, Deitel)
09/06 Overview (PPT) (Ch 1-3, Ch 1-2, Ch 1-2) 09/08 Processes (PPT) (Ch 4, Ch 3, Ch 3)
09/13 Threads (PPT) (Ch 5, Ch 4, Ch 4) 09/15 Postponed
09/20 Synchronization (PPT) (Ch 7-7.2, Ch 6-6.3, Ch 5-5.4) 09/22 Locks (PPT) (Ch 7.3, Ch 6.4, Ch 5.5)
09/27 Semaphores (PPT) (Ch 7.4, Ch 6.5, Ch 5.6) 09/29 Philosophers and Monitors (PPT) (Ch 7.5-7.8, Ch 6.6-6.8, Ch 6)
10/04 Deadlock (PPT) (Ch 8, Ch 7, Ch 7) 10/06 CPU Scheduling (PPT) (Ch 6, Ch 5, Ch 8)
10/11 CPU Scheduling No reading 10/13 Memory Allocation (PPT) (Ch 9-9.3, Ch 8-8.3, Ch 9)
10/18 Memory Management (PPT) (Ch 9, Ch 8 Ch 10) 10/20 Paging (PPT)
10/25 Midterm Exam 10/27 Case Study (PPT)
11/01 Virtual Memory (PPT) (Ch 10, Ch 9, Ch 11) 11/03 VM Replacement (PPT) Paper
11/08 Virtual Memory (PPT) 11/10 Files and Directories (PPT) (Ch 11, Ch 10, Ch 13-13.4)
11/15 Disks (PPT) (Ch 14-14.4, Ch 12-12.5, Ch 12-12.9) 11/17 RAID (Ch 14.5, 12.7, 12.10)
11/22 Postponed 11/24 Thanksgiving
11/29 File Allocation (PPT) (Ch 12-12.8, 11-11.8, 13.5-13.11) 12/01 FFS : Read PS or PDF
12/06 Journaling FS PPT 12/08 Distributed FS PPT
12/13 Security PPT 12/15 Encryption PPT

If you have questions or comments or just are up late, send mail; we may even reply!