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
- [Tue Apr 23 13:15:42] A sample final exam is available. Remember, the final
will cover papers from Resource Containers, Virtual Memory, File
Systems, and Encryption. The final is closed note and closed book.
- [Tue Apr 2 13:06:59] A sample good report for the warm-up
project is available.
- [Sun Mar 17 15:57:04] A sketch of good answers for the
midterm
is now available.
- [Thu Mar 7 11:13:16] A sample midterm is now available --
answers will not be made available.
- [Wed Feb 13 11:36:14] The list of suggested projects is now
available.
Initial project meetings will be Friday, Feb 22nd.
- [Wed Feb 13 09:52:42] The slides used in lecture to discuss
Gray-Box Systems are available here
- [Mon Jan 28 16:22:19] Your warm-up project on OS
measurement is now available from here.
It is due in two weeks: Monday, February 11th.
- [Tue Jan 15 11:50:00] Course enrollment is currently closed.
If you were not able to register, but are interested in taking the
course, you should show up to the first day of class. The following
priority will be given to students: CS graduate students, ECE graduate
students, then all other students. See here
for more details. I will try to let all first-year CS graduate
students enroll.
- [Tue Jan 15 11:50:00] This page is under
construction. All information here is tentative until the first day
of class.
- Old news is kept here.
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.
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:
- What problem are the authors trying to solve?
- Why was the problem important?
- Why was the problem not solved by earlier work?
- What is the authors solution to the problem?
- How does their approach solve the problem?
- How is the solution unique and innovative?
- What are the details of their solution?
- How do the authors evaluate their solution?
- What specific questions do they answer?
- What simplifying assumptions do they make?
- What is their methodology?
- What are the strengths and weaknesses of their solution?
- What is left unknown?
- What do you think?
- Is the problem still important?
- Did the authors solve the stated problem?
- Did the authors adequately demonstrate that they solved the
problem?
- 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:
- Answer the specific question that has been posted.
- Do not write more than two paragraphs.
- Do not quote large parts directly from the paper.
- Use your own words and thoughts.
- Look at the sample responses that were selected as good examples.
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:
- Initial Meeting: We will use the initial meeting to help
figure out which projects would be a good match for your interests and
previous experience; therefore, before this initial meeting, you
should have narrowed down the list of potential projects to two or
three that you are interested in and should have read the listed
background papers. Of course, you are more than welcome to informally
talk to me about potential projects before this meeting!
- Proposal Report: After our meeting, you should determine
exactly what problem you will solve. In your project proposal, you
should clearly state the problem you are planning to solve, the
motivation for why this problem is important, your initial plans for
approaching the problem, and your proposed methodology for evaluation.
This report should contain references to at least one related background paper
(not already listed by me) that you have read. Your write-up should
be approximately a full page in length (or 500-1000 words).
- Related work report: An important component in research is
placing your contribution in the context of past work, which involves
differentiating your work from previous work. (There is nothing worse
than working on a problem, only to discover several months into the
work, that someone has already solved it!) To ensure that you have
found the applicable background material before beginning your own
work, I would like to see a summary of the relevant papers that you
have read (or, alas, skimmed). While the number of relevant papers
will vary depending upon your project, you should search for 8 to 10
references and write 500-1000 words. To find relevant papers, you may want
to check out the resources at the end of this
page. Your report should contain the appropriate citations in a
Reference section (I would suggest using bibtex for this).
This write-up may later become the Related Work section of your final
report (of course, you may need to add references, especially if the
direction of your contribution changes).
- Progress Meeting: After you have had about a month to work
on your project, we will meet to discuss your progress and any
problems that you are having. This will be an informal meeting, but
you should come to the meeting prepared to talk about your initial
results.
- Final Meeting: Near the end of the semester, we will have
one last meeting to discuss your results. At this meeting, you should
summarize the problem you are solving, your approach, your
methodology, and your results; you should plan how you will talk about
these issues, but you do not need to prepare slides. You should
absolutely bring all of your experimental results (in graph or table
form). At this meeting, you will receive feedback on what you need to
complete before your final report.
- In-class presentations: All students will give a very brief
overview of their projects in the last week of classes. Each group
will have approximately 10 minutes to describe their work to the rest
of the class. Given this short time-frame, you will be giving only a
very broad overview of your results; do not expect to distill
everything that you did and learned in this talk! The time limit will
be strictly enforced! You may want to check out the following site
for some hints on giving a good talk.
- Final report: Your final write-up should be similar in
style, length, and content to an OS conference paper. This is clearly
the most important part of demonstrating your project! More
details on writing the report will be given in class.
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
|
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%
|
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