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.
There is a mailing list for contacting the staff: firstname.lastname@example.org. Questions and comments should be sent there. Please prefix the subject line with "CS240" for a prompt response. Announcements from the staff will be sent via the email@example.com mailing list to which any registered student will automatically be added to. If you are not registered for the class then subscribe to the cs240-guests mailing list by emailing firstname.lastname@example.org with the body of the message saying "subscribe cs240-guests."
The prerequisite for this class is CS 140 (previously CS 240A) 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 three exams. As the quarter progresses there may be ways to get extra credit. 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.
Most of the work in this course consists of reading journal and conference papers. We will cover one paper for each class meeting. Unlike past quarters this class will be primarily discussion based, rather than organized as 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. 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.
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. 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.
The class is graded on a rough curve with an average grade being a B+. 40% of your grade will come from class participation, the other 60% will be based on the best out of two midterm exam scores and the final exam score. Since it is difficult for SITN students to participate in class discussion, they will not be allowed to drop one of their midterm scores (all three of the exams will count towards their final grade). There will be no papers to write as was previously stated on the website. Because of the experimental nature of the course, the grading will not be very strict.
Two midterm exams and a final exam will be given in class. They will be open book . The exam with the lowest score will be dropped (except for SITN students; all exams will count). The midterm exams are not cumulative, but the final exam is cumulative. There will be no makeup exams. If you miss a midterm exam, consider that exam to be the one of the two midterms that is dropped for calculating your grade. Missing both of them or the final exam is unacceptable. A sample exam will be available along with sample solutions. Review sessions will be held before each exam. Note that the last exam is held during dead week!
SITN students may take the exams at their company sites, but the exams must be taken at the same time as the in-class exams. Please make sure that you'll be able to take the exams as scheduled. SITN students must take all three 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.
There is a class newsgroup, su.class.cs240, that can be used by members of the class to converse with each other. 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:
|(4/3)||The Rise of "Worse is Better"||Richard Gabriel|
|Conc. (4/5)||An Investigation of the Therac-25 Accidents||Leveson and Turner|
|Conc. (4/8)||Practical Considerations for Non-Blocking Concurrent Objects||Bershad|
|Conc. (4/10)||Eraser: A Dynamic Data Race Detector for Multithreaded Programs||Stefan Savage|
|Conc. (4/12)||Experience with Processes and Monitors in Mesa||Butler Lampson|
|Conc. (4/15)||Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism||Anderson, Bershad, et.al.|
|VM (4/17)||Virtual Memory for an Object-Oriented Language||Ted Kaehler|
|VM (4/19)||A New Page Table for 64-bit Address Spaces||Talluri, Hill, and Khalidi|
|VM (4/22)||Simple But Effective Techniques for NUMA Memory Management||Bolosky, Fitzgerald, Scott|
|Conc (4/29)||On the Duality of Operating System Structures||Lauer & Needham|
|Net (5/1)||Flash: An efficient and portable Web server||Pai, Druschel, and Zwaenepoel|
|Net (5/3)||Eliminating Receive Livelock in an Interrup-driven Kernel||Jeffrey Mogul|
|5/6||No Lecture due to instructor illness|
|Guest Lecture (5/8)||The Cathedral and the Bazaar||Eric Raymond|
|Net (5/10)||Ethernet: Distributed Packet Switching for Local Computer Networks||Metcalfe and Boggs|
|Net||End-to-End Arguments in System Design||Saltzer, Reed, and Clark|
|(extra paper) Dawn of the Stupid Network||David Isenberg|
|Net/FS (5/15)||Design and Implementation of the Sun Network Filesystem||Sandberg, Goldberg, et al.|
|Net (5/17)||Anatomy of a Large-Scale Hypertextual Web Search Engine||Brin and Page|
|FS (5/24)||The Design and Implementation of a Log-Structured File System||Rosenblum and Ousterhout|
|FS (5/29)||Soft Updates: A Solution to the Metadata Update Problem in File Systems||Ganger, McKusick, Soules, and Patt|
|FS (5/31)||A Case for Redundant Arrays of Inexpensive Disks (RAID)||Patterson, Gibson, and Katz|
|FS (6/3)||The Transaction Concept: Virtues and Limitations||Gray|
|(first 8 pages recommended)An introduction to disk drive modeling||Ruemmler and Wilkes|
|Misc (6/5)||Hints for Computer System Design||Lampson|
|FS||Deciding when to forget in the Elephant file system||Santry, Feely, et al.|
|Reliability||Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions||Engler, Chelf, et al.|
|Reliability||Bugs as Deviant Behavior: A General Approach to Inferring Errors in Systems Code||Engler, Chen, et al.|
|Reliability||Why Cryptosystems Fail||Ross Anderson|
|OS||Disco: Running Commodity Operating Systems on Scalable Multiprocessors||Bugnion, Devine, and Rosenblum|
|OS||Application Performance and Flexibility on Exokernel Systems||Kaashoek, Engler, et al.|
Webpage maintained by Benjamin Chelf
Last updated pretty recently...