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: virtual memory management, synchronization and communication, file systems, protection and security, operating system structure and extension techniques, fault tolerance, and history and experience of systems programming.
The prerequisite for this class is CS 140 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.
The other requirement is that students be able to send and receive email, access the class newsgroup, access the class web page, and download and print postscript from the class web page. There will be very few handouts in the course, since most of the notes and other materials will be available only on the class web page.
The course consists of lectures, readings, and two exams. 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 three times: twice very carefully, the last time focusing on the hard parts. For any artifact the paper describes you should draw a picture. This should all be done more than a day in advance so that it sinks in.
Most of the work in this course consists of reading journal and conference papers. We will cover one paper for each class meeting. This class will be primarily discussion based (rather than organized around lectures). Active discussion will (hopefully) give you a non-trivial understanding of the material. The only way this approach can work is if you read the papers carefully. To encourage this, 40% of your class grade will come from class participation: this includes talking in class, as well as how you do on pop quizzes and (possibly) pop presentations. (Given the realities of geography remote SITN students can get their entire grade from exams.) 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.
The class is graded on a rough curve. 40% of your grade will come from class participation, the other 60% will be based on scores on two in-class exams. SCPD students will be graded just on exams (and any homeworks).
A: No. Attendance is a necessary but not sufficient condition for good class participation.
As far as attendance is concerned, the general policy is that a student will automatically receive a deduction of one letter grade for missing more than 3 lectures. We will not take official roll during lecture, but because we make the effort to know everyone in the class we will notice if a student is frequently absent. If you are a non-SCPD student and have any concerns about not being able to regularly attend class (e.g., you will have to miss several classes during the quarter) please discuss this as soon as possible with the course staff.
Beyond attendance, we evaluate class participation largely by observing how prepared students are to discuss the covered paper when they come to class. This is not a trivial requirement because we expect papers to have been read thoroughly prior to lecture.
There will be two exams. They will be open book (but not open laptop). The final exam is cumulative. Sample exams with solutions are available on sites from previous years.
For general questions please first post to the class newsgroup, su.class.cs240 --- if you have a question, other people probably have the same one (or should). All course announcements will be put on to the class web page. The news group is a good place to advertise for study groups, ask questions of other students, etc.
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:
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. Papers will be discussed in class in approximately the order that they appear on the reading list below. You must read the papers before class.
|(M 9/22)||The Rise of "Worse is Better"||Richard Gabriel|
|(W 9/24)||Eraser: A Dynamic Data Race Detector for Multithreaded Programs||Savage, Burrows, Nelson, Sobalvarro, and Anderson|
|(F 9/26)||Experience with Processes and Monitors in Mesa||Butler Lampson|
|(M 9/29)||Threads cannot be implemented as a library||Hans-J. Boehm|
|(W 9/31)||Why Threads Are A Bad Idea
Why Events Are A Bad Idea
Cooperative Task Management without Manual Stack Management
|Ousterhout, von Behren, and Adya|
|(F 10/3)||Virtual Memory Management in the VAX/VMS Operating System||Levy and Lipman|
|(M 6/10)||Practical, Transparent, Operating System Support for Superpages||Navarro, Iyer, Druschel, and Cox|
|(W 8/10)||A Comparison of Software and Hardware Techniques for x86 Virtualization||Adams and Ageson|
|(F 10/10)||Memory Resource Management in VMware ESX Server||Waldspurger|
|(M 10/13)||Enhancing Server Availability and Security Through Failure-Oblivious Computing||Rinard, Cadar, Dumitran, Roy, Leu, Beebee|
|(F 10/17)||Review Day|
|(M 10/20)||Midterm: in-class, open notes|
|(W 10/22)||Improving the Reliability of Commodity Operating Systems [Nooks]||Swift, Bershad, Levy|
|(F 10/24))||Eliminating Receive Livelock in an Interrupt-Driven Kernel||Mogul and Ramakrishnan|
|(M 10/27)||The Design and Implementation of a Log-Structured File System||Rosenblum and Ousterhout|
|(W 10/29)||Integrating Concurrency Control and Energy Management in Device Drivers||Klues, Handziski, Lu, Wolisz, Culler, Gay, Levis|
|(F 10/31)||Rethink the Sync
Disks from the Perspective of a File System
|Nightingale, Veeraraghavan, Chen, Flinn, and McKusick|
|(M 11/3)||Design and Implementation of the SUN Network Filesystem||Sandberg et al.|
|(W 11/5)||Leases: An Efficient Fault-Tolerant Mechanism for Distributed File Cache Consistency||Gray and Cheriton|
|(F 11/7)||A Low-Bandwidth Network File System||Muthitacharoen, Chen, and Mazieres|
|(M 11/10)||MapReduce: Simplified Data Processing on Large Clusters||Dean and Ghemawat|
|(M 11/17)||Bigtable: A Distributed Storage System for Structured Data||Chang et al.|
|(W 11/19)||A Case for Redundant Arrays of Inexpensive Disks (RAID)||Patterson, Gibson, and Katz|
|(F 11/21)||Secure Web Applications via Automatic Partitioning
Slides on DAC vs. Mac
|Chong, Liu, Myers et al.|
|(M 12/1)||Bugs as Deviant Behavior: A General Approach to Inferring Errors in Systems Code||Engler, Chen, Hallem, Chou, and Chelf|
|(W 12/3)||Hints for Computer System Design (sort of review)||Lampson|