CS 736: Advanced Operating Systems
Spring 2002

Andrea Arpaci-Dusseau,
office hours: Tuesday (1:30 - 2:30), Wednesday (2:30 - 3:30)
office: 7375 Computer Sciences

Short-cuts


News


Summary

Welcome to graduate-level operating systems! This course will cover an exciting range of topics within the broad field of operating systems, including basic structure, file systems and storage servers, memory management, process scheduling and resource management, threads, distributed systems, and security. We will examine influential historical systems as well as important current efforts. We will extract lessons both on how to build systems and how to evaluate them. The two major components of the course are the reading and the projects. More details are given below.

Administrative Details

Lecture:
time: 1:00 - 2:15 p.m.
days: Monday, Wednesday, Friday
place: 101 Psychology

Note that class is scheduled to meet for an hour and 15 minutes, but we have the Monday, Wednesday, Friday slot. Thus, we only have to meet on average, two out of the three days. Throughout the semester we will meet on different days; I've scheduled more meetings early in the semester so that you will have more time at the end of the semester to work on your projects. Although a tentative schedule is posted on this page, you must keep 1 - 2:15 free on all Mondays, Wednesdays, and Fridays throughout the semester, in case I change the schedule.

TA:
Vijayan Prabhakaran
e-mail: vijayan@cs

Prerequisites:
We assume that you have taken an undergraduate operating system course, such as CS537. In CS736, we will assume that you are incommand of this material and we will absolutely not review undergraduate content. If you are unsure of your background, please come and talk with me.

Mailing lists:
Important announcements will be sent to the class mailing list. You are responsible for the material sent to that list, so make sure that you read your e-mail frequently. 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.

Reading

The reading schedule for this course will be intense. The readings are grouped into four major categories: operating system structure, process synchronization and scheduling, memory management, and stable storage. Within each category, we will begin by reviewing background material, reading the historic papers that led to many of the fundamental operating system concepts that you learned about in your undergraduate OS courses. We will then focus on influential papers that proposed significant and innovative ideas that have shaped OS research. Next, we will try to read a paper that stresses the measurement or evaluation side of this category. Finally, we will conclude each category with a set of papers that look to the future and perhaps point the way.

The following is the tentative reading schedule. Please wait to read each paper until details have been announced in class; I may either switch papers (unlikely) or give suggestions on which parts of the paper you should focus or skim (likely). The full citation information for each paper is available from this page.

Monday
Wednesday
Friday
Project Notes
01/21 MLK Day - No class 01/23 Introduction 01/25 THE, Nucleus
01/28 HYDRA 01/30 UNIX, Pilot 02/01 Free Warm-up Available
02/04 Exokernel 02/06 Disco 02/08 Free
02/11 Measurement 02/13 Gray-box 02/15 Free Warm-up Due
02/18 Free 02/20 Amoeba vs. Sprite, Clusters 02/22 Free Initial Meetings
02/25 Monitors, Mesa 02/27 Scheduler Activations 03/01 Free Proposal Due
03/04 Lottery 03/06 Load balancing 03/08 Free
03/11 Resource Containers 03/13 Review 03/15 Exam 1
03/18 Multics, VAX 03/20 Mach 03/22 Free Related Work Report
03/25 Spring Break 03/27 Spring Break 03/29 Spring Break
04/01 FFS, RAID 04/03 LFS 04/05 Free Progress Meetings
04/08 NFS 04/10 AFS 04/12 Free
04/15 Coda 04/17 NASD 04/19 Free
04/22 Measurements 04/24 Encryption 04/26 Review
04/29 Exam II 05/01 Free 05/03 Free Final Meetings
05/06 Student Presentations 05/08 Student Presentations 05/10 Student Presentations

You will have three basic responsibilities for the readings covered in the course:

1 - Read the assigned papers before class. Without doing so, discussion is not as interesting!

2 - Form a discussion group. You should have three or four people in your group, and discuss each paper sometime before class meets. It is up to you if you want to meet just once a week or twice a week before each class, but you should discuss each paper. When you have formed a group, please send me email with a list of group members. When discussing each paper, you are encouraged to consider the following questions:

  1. What problem are the authors trying to solve?
  2. What is the authors solution to the problem?
  3. How do the authors evaluate their solution?
  4. What do you think?
  5. What future work does this research point to?

3 - Write-up each paper (or set of papers per lecture). Your write-up for each lecture should consist of a very short essay-style answer. The list of questions to answer can be found here. Turn in your write-up via email by sending them to cs736-handin@cs before 11 a.m. on the day of the class where we discuss the paper, with the due date in the subject line (e.g., 01/25). Late write-ups will automatically receive a null score. Write-ups must be in plain text. More hints on a good write-up include:

Projects

In this course, you will be completing two projects: a warm-up project and a main project.

The warm-up project is meant to be done fairly quickly; you will have two weeks to work on this assignment. You will work on this project individually and then hand in a short report on your results. This project will be fairly well-defined. More details will be available later.

The main project in this course has two goals. The first goal is to help you learn more about doing research in general. The second goal is to give you the opportunity to study a particular area of OS in greater detail. Therefore, you are expected to perform a substantial research project; this involves selecting an open problem, reading the related work, designing, implementing, and evaluating a solution, and presenting your results. Your completed projects should be of high enough quality that it could (eventually) be published in a major operating systems conference. People should work in groups of size two; under no circumstances will larger groups be permitted!

You are strongly encouraged to select a project from my list of suggestions (but a project of your own devising is possible given sufficient justification at our initial project meeting). This list will be made available soon. Remember, the best project for you is the one you feel motivated to do (not the easiest one, and not the most-likely-to-get-me-a-paper one). The project is your chance to work on something new and different -- I sincerely hope that not only will you learn a lot while doing your project, but also that you will have a lot of fun!

Throughout the semester, there will be a few milestones that you must meet for your main project:

The following table summarizes the important dates for your project.

Event Due Date
Warm-up project available: Mon 1/28
Warm-up project due: Mon 2/11 (5pm)
Initial meeting: Fri 2/22
Proposal: Fri 3/01 (5 pm)
Related work report: Fri 3/22 (5 pm)
Progress meeting: Fri 4/05
Final meeting: Week of 4/29
In-class presentations: Week of 5/6
Final report: Wed 5/15

Grading

I will apply the following formula when calculating your final grade. As you will see, the project is a very important component of this course! Class participation will be used to determine border-line cases.
Activity Percentage
Writeups of Reading: 10%
Exam I: 20%
Exam II: 20%
Warm-up Project: 10%
Project: 40%

Resources

When searching for related work, I would suggesting starting with citeseer. You can search by keyword, but another very useful feature is to look for other (more recent) papers that reference a given related paper. Another good way to find a set of related papers is to start with the most recent related paper that you can find and to work backwards in time through its references. You can also get useful references from The Collection of Computer Science Bibliographies. You'll note that both have bibliography entries in bibtex format, since many papers written in CS use latex (and thus bibtex). As a last resort, you can always search the web as a whole with a general search engine.

Specific OS Publications:
Operating system research papers are presented in a number of major conferences and journal. When looking for related work, it also makes sense to at least look at the titles and abstracts from papers published in the sources for the last few years.

In summary, these are the top conferences and journals to keep in mind for OS research, whether you are thinking about publishing your own work, searching for related work, or trying to keep out-to-date with the field.

Finally, a collection of advice papers is available in the Advice Papers List. I highly recommend that you read these papers on your own; however, you will not be held responsible for them.

Local Resources
Computer Systems Lab Homepage
Crash and Burn Lab