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:

  • Concurrent Execution: threads, event systems, async/sync I/O, etc.
  • Memory Management: virtual memory, NUMA machines, memory allocators, etc.
  • Scalability: multicore processing, locking, lock-free data structures, etc.
  • File Systems: file system interfaces, networked file systems, etc.
  • OS Architecture: the structure and design of an operating system
  • Virtualization: machine virtualization, binary instrumentation, etc.
  • Security: data security and integrity, authentication, authorization, etc.
  • History/Experience: historically important papers and experience reports

Reading List

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 are required to read the papers listed in each class slot before that class meets. For additional reading material, see a previous installment of CS240.

Week Tuesday Thursday
1 The Rise of "Worse is Better"
Eraser: A Dynamic Data Race Detector for Multithreaded Programs
2 Lab 1 Released
Threads Cannot Be Implemented As a Library
Why Threads Are A Bad Idea (for most purposes)
Why Events Are A Bad Idea (for high-concurrency servers)
Cooperative Task Management without Manual Stack Management
3 Hoard: A Scalable Memory Allocator for Multithreaded Applications
Memory Resource Management in VMware ESX Server
4 Lab 1 Due
An analysis of Linux scalability to many cores
The Scalable Commutativity Rule: Designing Scalable Software for Multicore Processors
5 Team Member List Due
Design and Implementation of the SUN Network Filesystem
Leases: An Efficient Fault-Tolerant Mechanism for Distributed File Cache Consistency
Lab 2 Released
The Design and Implementation of a Log-Structured File System
6 Final Project Ideas Due (on Piazza)
Midterm 1 (in class, open notes)
Midterm Solutions
Rethink the Sync
7 Project Checkpoint 1 (Wednesday)
Exokernel: an operating system architecture for application-level resource management
Lab 2 Due
Singularity: Rethinking the Software Stack
8 Map Reduce: Simplified Data Processing on Large Clusters
Map Reduce Code Handout
The Tail at Scale
Native Client
9 Project Checkpoint 2 (Wednesday)
Bugs as Deviant Behavior: A General Approach to Inferring Errors in Systems Code
No class! Study for final or work on projects.
10 Final Exam (in class)
No class
11 Final Projects Due
Project Presentatations (12:15 - 3:15PM)
End of Quarter!