Unless otherwise noted, you only need to review the first paper listed for each day.
Note that optional readings are available for those with more interest in a topic,
and are not required reading for any exams or homework assignments.
Papers are only accessible to hosts in the unc.edu domain, although most are available elsewhere online.
Marking a paper as "Light" is not a criticism, but rather that you need not tease out every low-level detail. It is there to provide extra context and you should come to class prepared to discuss its main points.
Date |
Topics |
Notes |
Readings |
Optional Readings |
Wed 01/08 |
Introduction
|
No review due on the first day of the course. Don's Notes. |
- Protection in an Information Processing Utility (Graham, SOSP, 1967)
- Creating Trust by Abolishing Hierarchies(Castes, Ghosn, Kalani, Qian, Kogias, Payer, and Bugnion, HotOS, 2023).
|
Towards a Model of Computer Systems Research(Anderson, WOWCS '08). |
Part 1: OS Design |
Mon 01/13 |
Monolithic OS Design
|
Don's Notes. |
- Virtual Memory, Processes, and Sharing in Multics (Daley and Dennis, SOSP, 1967)
- How (and How Not) to Write a Good Systems Paper (Levin and Redell, SIGOPS OSR, 1983).
|
- Introduction and Overview of the Multics System (Corbato and Vyssotsky, FJCC, 1965)
- Structure of the Multics Supervisor (Corbato and Vyssotsky, FJCC, 1965)
|
Wed 01/15 |
Monolithic OS Design
|
Don's Notes. |
- The UNIX Timesharing System (Ritchie and Thompson, SOSP, 1974).
- The Rise of "Worse is Better" (Richard Gabriel, Lisp: Good News, Bad News, How to Win Big, 1989).
|
- The Structure of the "THE"-Multiprogramming System (Dijkstra, CACM '68).
- A fork() in the road (Baumann, Appavoo, Krieger, and Roscoe, HotOS '19)
- A File is Not a File: Understanding the I/O Behavior of Apple Desktop Applications (Harter, Dragga, Vaughn, Arpaci-Dusseau, and Arpaci-Dusseau, SOSP '11)
|
Mon 01/20 |
MLK Jr. Holiday - No class meeting.
|
|
|
|
Wed 01/22 |
Microkernels
|
Don's Notes. |
Mach: A New Kernel Foundation for UNIX Development (Accetta, Baron, Bolosky, Golub, Rashid, Tevanian, and Young, USENIX Summer '86). |
- Improving IPC by kernel design (Liedtke, SOSP '93)
- On Micro-Kernel Construction (Liedtke, SOSP '95)
- Unix as an Application Process (Golub, Dean, Forin, and Rashid, USENIX, 1990).
|
Mon 01/27 |
Research vs. Product
|
In reading the second paper, feel free to skim the technical details about RCU; focus instead on the history and lessons. Don's Notes. |
- The Linux Edge (Linus Torvalds, Open Sources: Voices from the Open Source Revolution 1999).
- Introducing Technology Into The Linux Kernel:A Case Study (McKenney and Walpole, 2009, originally OSR 2008).
|
- Tanenbaum-Torvalds Debate Summary
- Tanenbaum-Torvalds Debate: Part II (Tanenbaum 06).
|
Wed 01/29 |
Exokernels
|
Review the Exokernel paper. In your review, apply the end-to-end argument to 3 Exokernel design decisions. Don's Notes. |
- Operating System Support for Database Management (Stonebraker, CACM 1981).
- End-to-end Arguments in System Design (Saltzer, Reed, and Clark, TOCS 1984).
- Exokernel: An Operating System Architecture for Application-Level Resource Management (Engler, Kaashoek, and O'Toole Jr., SOSP, 1995)
|
- Application Performance and Flexibility on Exokernel Systems (Kaashoek, Engler, Ganger, Briceno, Hunt, Mazieres, Pinckney, Grimm, Jannotti, and Mackenzie, SOSP, 1997).
- iJournaling: Fine-Grained Journaling for Improving the Latency of Fsync System Call (Park and Shin, ATC, '17)
|
Mon 02/03 |
Virtual Machines (part 1)
|
Read through the end of Section 6.1. |
Bringing Virtualization to the x86 Architecture with the Original VMware Workstation (Bugnion, Devine, Rosenblum, Sugerman, and Wang, TOCS, 2012) |
- Disco: Running Commodity Operating Systems on Scalable Multiprocessors (Bugnion, Devine, and Rosenblum, SOSP, 1997).
- The Evolution of an x86 Virtual Machine Monitor (Agesen, Garthwaite, Sheldon, and Subrahmanyan, OSR, 2010)
|
Wed 02/05 |
Virtual Machines (part 2)
|
Read Sections 6.2--11. You do not need to submit a second review. Don's Notes. |
Bringing Virtualization to the x86 Architecture with the Original VMware Workstation (Bugnion, Devine, Rosenblum, Sugerman, and Wang, TOCS, 2012) |
- Memory Resource Management in VMware ESX Server (Waldspurger, OSDI, 2002).
- Virtualizing I/O Devices on VMware Workstation's Hosted Virtual Machine Monitor (Sugerman, Venkitachalam, and Lim, USENIX 2001)
|
Mon 02/10 |
Well Being Day, No class
|
|
|
|
Wed 02/12 |
Paravirtualization
|
Don's Notes. |
- Xen and Art of Virtualization (Barham, Dragovic, Fraser, Hand, Harris, Ho, Neugebaur, Pratt and Warfield, SOSP 2003).
- (Light) Are Virtual Machine Monitors Microkernels Done Right? (Hand, Warfield, Fraser, Kotsovinos, and Magenheimer, HotOS 2005).
- (Light) Are Virtual Machine Monitors Microkernels Done Right? (Heiser, Uhlig, and LeVasseur, SIGOPS OSR, 2006).
|
Dune: Safe User-Level Access to Privileged CPU Features (Belay, Bittau, Mashtizadeh, Terei, Mazieres, and Kozyrakis, OSDI 2012) |
Mon 02/17 |
Library OSes and Unikernels
|
|
Rethinking the Library OS from the Top-Down (Porter, Boyd-Wickizer, Howell, Olinsky, Hunt, ASPLOS, 2011) |
|
Wed 02/19 |
Snow Day. Class Canceled.
|
|
|
|
Mon 02/24 |
Safe Operating Systems: Singularity
|
Don's Notes. |
- Singularity: Rethinking the Software Stack (Hunt and Larus, SIGOPS OSR 2007).
- (Light) The Many Faces of Systems Research - And How To Evaluate Them (Brown, Chanda, Farrow, Fedorova, Maniatis, Scott, HotOS 2005)
|
- Helios: Heterogeneous Multiprocessing with Satellite Kernels (Nightingale, Hodson, McIlroy, Hawblitzel, and Hunt, SOSP 2009)
- Safe to the Last Instruction: Automated Verification of a Type-Safe Operating System (Yang and Hawblitzel, PLDI 2010)
|
Wed 02/26 |
Disaggregation and CXL
|
Don's Notes |
Managing Memory Tiers with CXL in Virtualized Environments (Zhong, Berger, Waldspurger, Wee, Agarwal, Agarwal, Hady, Kumar, Hill, Chowdhury, and Cidon, OSDI 2024). |
|
Part 2: File Systems |
Mon 03/03 |
Distributed File Systems: AFS
|
Email your rough project interest to Don Porter by midnight, EST. Don's Notes. |
Scale and Performance in a Distributed File System (Howard, Kazar, Menees, Nichols, Satyanarayanan, Sidebothiam, and West, TOCS 1988). |
- Design and Implementation of the SUN Network Filesystem (Sandberg, Goldberg, Kleiman, Walsh, and Lyon, USENIX 1985).
- Flat Datacenter Storage (Nightingale, Elson, Fan, Hofmann, Howell, and Suzue, OSDI 2012)
- LBFS: A Low-bandwidth Network File System (Muthitacharoen, Chen, and Mazieres, SOSP 2001)
|
Wed 03/05 |
Log-structured File Systems
|
Don's Notes. |
- The Design and Implementation of a Log-Structured File System (Rosenblum and Ousterhout, TOCS, 1992).
- Ousterhout's critique of Seltzer's 1993 paper
- Ousterhout's critique of Seltzer's 1995 paper
- Seltzer's response to Ousterhout's critiques
- Log-structured file systems: There's one in every SSD (Aurora, LWN 2009)
|
- A Log-Structured File System for UNIX (Seltzer, Bostic, McKusick, and Staelin, USENIX 1993)
- Logging versus Clustering: A Performance Comparison (Seltzer, Smith, Balakrishnan, Chang, McMains, and Padmanabhan, USENIX 1995)
- F2FS: A New File System for Flash Storage (Lee, Sim, Hwang, and Cho, FAST '15)
|
Mon 03/10 |
Spring Recess, Class canceled.
|
|
|
|
Wed 03/12 |
Spring Recess, Class canceled.
|
|
|
|
Mon 03/17 |
Dependence Tracking
|
Don's Notes. Project Proposals Due by midnight |
Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystem (McKusick and Ganger, USENIX, 1999) |
- Generalized File System Dependences (Frost, Mammarella, Kohler, de los Reyes, Hovsepian, Matsuoka, and Zhang, SOSP 2007)
- Soft Updates Made Simple and Fast on Non-volatile Memory (Dong and Chen, ATC '17).
- Disks from the Perspective of a File System (McKusick, Queue 2012)
|
Wed 03/19 |
Write-Optimization and BetrFS
|
Review the second paper. |
- An Introduction to Be-trees and Write-Optimization (Bender, Farach-Colton, Jannen, Johnson, Kuszmaul, Porter, Yuan, and Zhan, login Oct. '15)
- Optimizing Every Operation in a Write-Optimized File System (Yuan, Zhan, Jannen, Pandey, Akshintala, Chandnani, Deo, Kasheff, Walsh, Bender, Farach-Colton, Johnson, Kuszmaul, and Porter, FAST '16)
|
|
Part 3: Concurrency |
Mon 03/24 |
OS Design and Synchronization
|
Don's Notes. Queue Slides. |
Threads and Input/Output in the Synthesis Kernel (Massalin and Pu, SOSP 1989) |
- The Design and Implementation of an Operating System to Support Distributed Multimedia Applications (Leslie, McAuley, Black, Roscoe, Barham, Evers, Fairbarns, and Hyden, JSAC 1997).
- Chapter 6 of Massalin's Thesis
|
Wed 03/26 |
Scaling the OS and Applications
|
Don's Notes. |
The Scalable Commutativity Rule: Designing Scalable Software for Multicore Processors (Clements, Kaashoek, Zeldovich, Morris, and Kohler, SOSP '13) |
- Experiences with Processes and Monitors in Mesa (Lampson and Redell, Communications of the ACM 23, 2, 1980).
- Programming with Threads (Birrell 1996).
- Event-driven Programming for Robust Software (Dabek, Zeldovich, Kaashoek, Mazieres, and Morris, SIGOPS, 2002)
- Why Events Are A Bad Idea (for high-concurrency servers) (von Behren, Condit, and Brewer, HotOS, 2003)
- Why Threads Are a Bad Idea (for most purposes) (Ousterhout, USENIX, 1996).
|
Mon 03/31 |
Large Scale Machine Learning
|
Don's notes. |
Tensorflow: A system for large-scale machine learning (Abadi et al., OSDI '16). |
|
Part 4: Correctness |
Wed 04/02 |
seL4
|
Don's notes. |
seL4: Formal Verification of an OS Kernel (Klein et al, SOSP '09) |
From L3 to seL4: What Have We Learnt in 20 Years of L4 Microkernels? (Elphinstone and Heiser, SOSP '13) |
Mon 04/07 |
Practical System Verification
|
Don's notes. |
Verus: A Practical Foundation for Systems Verification (Lattuada, Hance, Bosamiya, Brun, Cho, LeBlanc, Srinivasan, Achermann, Chajed, Hawblitzel, Howell, Lorch, Padon, and Parno, SOSP '24) |
- Storage Systems are Distributed Systems (So Verify Them That Way!) (Hance, Lattuada, Hawblitzel, Howell, Johnson, and Parno, OSDI '20)
- Push-Button Verification of File Systems via Crash Refinement. (Sigurbjarnarson, Bornholt, Torlak, and Wang, OSDI '16)
|
Wed 04/09 |
Storage Verification, Light
|
Don's notes. |
Using Lightweight Formal Methods to Validate a Key-Value Storage Node in Amazon S3 (Bornholt et al., SOSP '21) |
|
Part 5: Debugging |
Mon 04/14 |
Finding Bugs
|
Don's Notes. |
- Klee: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs (Cadar, Dunbar, and Engler, OSDI 2008)
- A few billion lines of code later: using static analysis to find bugs in the real world (Al Bessey, Ken Block, Ben Chelf, Andy Chou, Bryan Fulton, Seth Hallem, Charles Henri-Gros, Asya Kamsky, Scott McPeak, Dawson Engler, Communications of the ACM archive Volume 53, Issue 2, February 2010)
|
Weird things that surprise academics trying to commercialize a static checking tool (Chou, Chelf, Hallem, Hanri-Gros, Fulton, Unangst, Zak, and Engler, SPIN, 2005) |
Wed 04/16 |
Statistical Debugging
|
Don's notes |
Debugging in the (Very) Large: Ten Years of Implementation and Experience (Glerum et al., SOSP '09) |
|
Mon 04/21 |
Metastable Failures
|
Review the second paper. Don's notes |
- Metastable Failures in Distributed Systems (Bronson, Aghayev, Charapko, and Zhu, HotOS '21)
- Metastable Failures in the Wild (Huang et al., OSDI '22)
|
|
Wed 04/23 |
Project Presentations
|
|
|
|
Mon 04/28 |
Project Presentations
|
Final project report due via email to Don Porter by 5pm EDT. |
|
|