CS-537: Introduction to Operating Systems


University of Wisconsin, Madison
Department of Computer Sciences
Spring 2001

Basic Information

Lecture: Tuesday and Thursday at 9:30 - 10:45
Discussion: Tuesday at 2:30 - 3:20
Where: Both lecture and discussion are in 2317 Engineering Hall ( timetable entry )

Professor: Remzi Arpaci-Dusseau (remzi@cs)
Office: 7357 Computer Sciences
Office Hours: Tuesday at 3:30pm, and Thursday at 1:30 pm, and by appointment

TA: Det Buaklee (det@cs.wisc.edu)
Office: 1302 Computer Sciences
Office Hours: Monday at 2:30pm - 4:00pm and Tuesday at 3:30pm - 5:00pm
Office Phone: 262-6600

TA: Vishal Sanghvi (sanghvi@cs.wisc.edu)
Office: 1338 Computer Sciences
Office Hours: Monday at 9:00am - 10:30am and Friday at 11:00am - 12:30pm
Office Phone: 262-6592

Notes

5/10: Thank you all for a fun class! Grades will be posted by the morning of 5/11. I will send out mail when it's all done

5/9: Exam notes
Here is an overview of exam topics for those who missed the review.
You will be allowed a single page (both sides) as a cheat sheet.

Here are some Summer Readings for those who are interested.

Old Notes

Overview

Welcome to 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, file systems and storage servers, memory management techniques, process scheduling and resource management, 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 both Java and C (or C++) to perform the assignments in the course.

Mailing List

Important announcements will be sent to the class mailing list, so please read it frequently! 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.

The mailing list is cs537-2list@cs.wisc.edu. The log of email is available at this url.

Materials

Readings will be assigned in Operating Systems: A Modern Perspective (Second Edition) by Gary Nutt, Addison-Wesley.

You may also find a number of on-line references useful. For Java references, Marvin Solomon has written an excellent tutorial, Java for C++ Programmers. He also recommends the following book on Java: The Java Programming Language by Ken Arnold and James Gosling, Addison-Wesley, 1996. You may also want to check out the materials for the self-paced CS368 course called "Java for C++ programmers".
There are also lots of helpful materials about Java available on-line. The following references are available at the Java home site.

A short overview of the C programming environment is now available too.

You will be able to use either C or C++ or 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."

Projects

As part of the course, you will complete 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.

Most of the programming assignments will use Java; however, half of the first assignment and one other assignment will require C or C++. We assume that you have enough programming background that learning the basics of a new language will not be difficult.

For some of 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.

For all Java assignments, you must adhere to the following conventions:

The following table specifies the general topic of each assignment, the tentative programming language, and a tentative due date. The programming language and due data will be fixed once the specification for the assignment has been made available.
Subject
1 Threads
2 Scheduling
3 Synchronization
4 Virtual Memory
5 File Systems
Focus
C and Java
C
Java
Java
Java(?)
Due Date
Feb. 6
Feb 27
March 27
April 17
May 8
Specification
Project #1
Project #2
Project #3
Project #4
Project #5

Exams

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 equally weighted. Dates will be announced soon.

Grading

Projects are worth 60% your total grade, and the two exams will make up the rest.

Tentative Schedule

Date
Jan 23
Jan 25
Jan 30
Feb 1
Feb 6
Feb 8
Feb 13
Feb 15
Feb 20
Feb 22
Feb 27
Mar 1
Mar 6
Mar 8
Mar 13
Mar 15
Mar 20
Mar 22
Mar 27
Mar 29
Apr 3
Apr 5
Apr 10
Apr 12
Apr 17
Apr 19
Apr 24
Apr 26
May 1
May 3
May 8
May 10
Lecture
Intro
Processes
CPU Scheduling
Advanced Topics
Synchronization
Locks
Synchronization (cont)
Monitors
Message passing
Deadlock
Memory Allocation
Memory Management
Segmentation/Paging
Exam
Spring Break
Spring Break
Paging/Segmentation
TLBs
Virtual Memory
Virtual Memory
Virtual Memory
I/O, Disks
Class cancelled
RAID
File Systems
File Allocation
FFS
Beyond FFS
Security
Encryption
Application Case Study and Future of OS
Final Exam
Reading
Ch. 1-4 (skim)
Ch. 6
Ch. 7

Ch. 8


Ch. 9
Ch. 17.2, 17.3
Ch. 10
Ch. 11

Ch. 12
Exam
Spring Break
Spring Break





Ch. 5


Ch. 13

FFS paper

Ch. 14



Other Information
Class Survey
Project #1: Available


Project #1: Due

Project #2: Available



Project #2: Due

Project #3: Available
Exam
Spring Break
Spring Break


Project #3: Due

Project #4: available



Project #4: Due

Project #5: available



Project #5: Due


Complaints about this page, operating systems, or the woes of being an undergraduate, should be sent to Remzi Arpaci-Dusseau.