CS380L: Advanced Operating Systems

Fall 2005 (54190) -- Emmett Witchel

Class Abstract

Students will study advanced operating system topics and be exposed to recent developments in operating systems research. This course involves readings and lectures on classic and new papers. Topics: operating system design, virtual memory management, virtual machines,  OS interaction with the hardware architecture, synchronization and communication, file systems, protection, and security.

Admin

Class times

MW 2:00-3:30 NOA 1.126

Instructor

Emmett Witchel
Office: ACES 6.240
Telephone: 232-7889
E-mail: witchel - at - cs.utexas.edu
Office hours: MW 3:30-4:30pm or by appointment.

Teaching Assistant

Tae Won Cho
E-mail: khatz@cs.utexas.edu
Office hours: Tuesday 2:00 - 3:00 and Wednesday 11:00-12:00 in ESB 229A  desk 5

Newsgroup and webpage

Assignments, announcements, and schedules will appear on either the newsgroup or web page. Watch both!
newsgroup: utexas.class.cs380l
web page: http://www.cs.utexas.edu/~witchel/380L

Useful links

Prerequisites

The prerequisite for this class is CS372 or the equivalent. It is necessary to have this background before taking the class, as we'll read a lot papers quickly without much time for catching up on the basics. The course assumes an understanding of topics in operating systems such as synchronization, virtual memory management, scheduling, and file systems.

Course Organization and Workload

The course consists of readings, homeworks, discussion, in-class presentation, two exams, and an independent research project (and possibly pop quizzes).  The two most important things to know about the class: (1) the main goal is to have interesting in-class discussions and (2) we recommend you read each paper at least twice, preferably more than a day in advance so that it sinks in.

Grading Policy

25-30% of your grade will come from class participation, your presentation and homeworks
30-35% of your grade will come from two in-class exams
40% of your grade will be based on your project

These figures are approximate.

Reading and discussion

Most of the work in this course consists of reading journal and conference papers. Most of  the papers we read will be good, and all are influential. We will cover one to two papers at each class meeting. This class will be primarily discussion based. Active discussion will (hopefully) give you a non-trivial understanding of the material.

This class is larger than ideal for a discussion-based class. I believe we can overcome this hurdle if everyone comes to class well prepared to participate in (or lead) discussions. If you skim papers and space out during discussion, you are doing your colleagues a disservice by lowering the level of discussion. The other problem, of course, is that individually you will learn much less if you follow that approach. The assignments and grading, therefore, are focused on creating an atmosphere where everyone comes to class well prepared for discussion.

25-30% of your class grade will come from class participation: this includes written critiques of the papers, participation in class, as well as how you do on pop quizzes (if there are any), and on your in-classs presentations. Another 30-35% of your grade will come from exams that test your understanding of the papers we have discussed. Class time will not be used to rehash the material in the papers. Instead, it will be used to highlight the important points and discuss some of the more interesting features. There will be as much as 10-15 hours of reading per week. Do not take this course unless you are willing and able to do a lot of reading.

Paper critiques. We will read about 28 "core technical" papers in class (plus a number of "background" and "professional development" papers.) For each of the core technical papers, you will prepare a (approximately) 1-page written critique (here is a template). This critique must be typeset (no handwritten critiques will be accepted) and must be turned in before the start of the class that discusses the paper. You may skip up to 4 critiques with no grading penalty. Details of what we expect in a critique will be covered in a handout.

Class participation. The class will provide ample opportunity to get involved in the discussions, and if you do not regularly participate in discussions, you will not get as much out of the class as you could. Your class participation will be based on three factors: (1) the TA and instructor's assessment of whether you were regularly involved in the discussions over the course of the semester, (2) turning in acceptable critiques as described above, (3)  a 10 minute, in-class presentation, whose exact nature is not yet decided.  Each presentation will probably be by a pair of students, sharing the presentation 50/50, presenting that day's paper. You will also make an oral presentation about your project.  (4) there might be several pop quizzes on the reading assignments over the course of the semester. If you turn in a critique (e.g., claim to have read and understood the paper) but your quiz indicates that you don't understand the paper, we will lower your class participation grade. (Note that if you don't turn in a critique for a class, you are "exempt" from taking a quiz for that class.)

Readings. There is no textbook for this course. The course is based on a collection of journal and conference papers that describe the history and state of the art in operating systems. The preliminary list of papers and schedule is available on-line. If you are interested, more papers on these topics are available from this  reading list ; we will cover a subset of these papers, and we will cover topics roughly in the order listed there. You must read the papers before class. At a minimum we recommend two close readings. We will provide most papers online; those that are only available in hardcopy will be provided about a week before they are needed.

Written homeworks. We may assign additional written homeworks that cover basic experimental skills useful for studying operating systems (cache simulation, network simulation, and simple statistics and data analysis). Unless otherwise noted, the homeworks will be done individually.

Exams

To test your understanding of the material, there will be two midterm exams. I plan to conduct them in class, but I may change one or both to be take-home exams.

Special offer: you can write your own exam questions! Submit a question with your solution in advance of the exam, and if we like it, it will appear on the exam.

Project

Research projects (done in groups of size 2 or 3) are a critical aspect of this course. Your goal is to do quality systems research, and add to the community's knowledge of how to build real systems. There will be several intermediate milestones during the semester, but the main deliverables due at the end of the semester will be a written report.
Project ideas will be suggested by the instructor, but you are encouraged to come up with your own ideas.  Conference deadlines to shoot for include SOSP/OSDI (late spring), Middleware (summer, usually), USENIX (fall), SIGMETRICS (fall), USITS (fall), WWW (fall), VLDB (TBA), PODC (January), SIGCOMM (January), MobiCOMM (early spring).

Collaboration

I strongly encourage you to discuss the papers and the homeworks with anyone you can. That's the way good science happens. As a professional, you should acknowledge significant contributions or collaborations in your written or spoken presentations.

The paper critiques should reflect your understanding of the paper. It is not acceptable to turn in a summary if you have not made an honest effort to read the paper. If you don't have time to read a paper before a class, make use of one of your skip credits. Never read another student's summary before you have turned in your own.

Unless otherwise stated, the homeworks must be done individually. You may orally discuss the homeworks with anyone, but you may not look at anyone else's code and you may not allow anyone else to look at your code.

Exams are to be done individually. They may only be discussed with the instructor and TA.

Intellectual dishonesty can end your career, and it is your responsibility to stay on the right side of the line. If you are not sure about something, ask. 

Other issues

Please read the department's code of conduct.

Course Outline

This course makes no attempt to cover all the interesting topics in operating systems. Instead, we will cover a few topics in depth. The course is divided into the following general topic areas:

OS Design with History and experience
Historically important papers and experience reports by senior researchers in the field.
OS structure,  virtual memory management, OS interaction with hardware architecture
Discussions of mechanisms for implementing OS services at user level, OS structure and performance, reliability and availability of OS services. Discussions of virtual memory management implementations and recent work in virtual memory for multiprocessors, NUMA machines, large virtual address spaces, and other topics.  Virtual machines and their impact on OS structure.
Synchronization and communication
Discussions of synchronization with an emphasis on monitors. Communication using remote procedure call.  Networking issues in operating systems.
File systems
Discussions of file system interfaces and disk storage management techniques.
Protection and security
Discussions of data security and authentication.

Course Themes

Reading and writing
 The course should teach you how to read and write about computer science research specifically, and scientific/engineering issues generally.
Experimental methodology
The course should teach you how to understand an evalutate a computer system.
System building experience
The course's project should expose you to a substantial programming task, prefereably executed in a group.