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/20 |
Introduction
|
No review due on the first day of the course. Don's Notes. Jamboard from First Day Discussion. |
How (and How Not) to Write a Good Systems Paper (Levin and Redell, SIGOPS OSR, 1983). |
Towards a Model of Computer Systems Research (Anderson, WOWCS '08). |
Part 1: OS Design |
Mon 01/25 |
Monolithic OS Design
|
Don's Notes. |
Introduction and Overview of the Multics System (Corbato and Vyssotsky, FJCC, 1965) |
|
Wed 01/27 |
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 02/01 |
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).
|
Wed 02/03 |
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).
|
Mon 02/08 |
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)
|
Wed 02/10 |
High-Performance User I/O
|
Review the second paper. Don's Notes. |
- (Light) Arrakis: A Case for the End of the Empire (Peter and Anderson, HotOS '13)
- Arrakis: The Operating System is the Control Plane (Peter, Li, Zhang, Ports, Woos, Krishnamurthy, Anderson, and Roscoe, OSDI '14)
|
- IX: A Protected Dataplane Operating System for High Throughput and Low Latency (Belay, Prekas, Klimovic, Grossman, Kozyrakis, and Bugnion, OSDI '14)
- PTask: Operating System Abstractions To Manage GPUs as Compute Devices (Rossbach, Currey, Silberstein, Ray, and Witchel, SOSP 2011)
- Dandelion: a Compiler and Runtime for Heterogeneous Systems (Rossbach, Yu, Currey, Martin, Fetterly, SOSP 2013)
- GPUfs: Integrating a File System with GPUs (Silberstein, Ford, Keidar, Witchel, ASPLOS 2013)
- The Multikernel: A New OS Architecture for Scalable Multicore Systems (Baumann, Barham, Dagand, Harris, Isaacs, Peter, Roscoe, Schupbach, and Singhania, SOSP 2009).
- An Analysis of Linux Scalability to Many Cores (Boyd-Wickizer, Clements, Mao, Pesterev, Kaashoek, Morris, and Zeldovich, OSDI 2010)
|
Mon 02/15 |
Wellness Day, Class Canceled
|
|
|
|
Wed 02/17 |
Virtual Machines (part 1)
|
Read through the end of Section 6.1. Jamboard on VMware. |
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)
|
Mon 02/22 |
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)
|
Wed 02/24 |
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 03/01 |
Library OSes and Unikernels
|
|
Rethinking the Library OS from the Top-Down (Porter, Boyd-Wickizer, Howell, Olinsky, Hunt, ASPLOS, 2011) |
|
Wed 03/03 |
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)
|
Mon 03/08 |
Safe Operating Systems: RedLeaf
|
Review the second paper. Don's notes. |
- RedLeaf: Towards An Operating System for Safe and Verified Firmware (Narayanan, Baranowski, Ryzhyk, Rakamaric, and Burtsev, HotOS '19)
- RedLeaf: Isolation and Communication in a Safe Operating System (Narayanan, Huang, Detweiler, Appel, Li, Zellweger, and Burtsev, OSDI '20)
|
- Thunderstrike: EFI firmware bootkits for Apple MacBooks (Hudson and Rudolph, SYSTOR '15)
- RustBelt: Securing the Foundations of the Rust Programming Language (Jung, Jourdan, Krebbers, and Dreyer, POPL '18)
|
Part 2: File Systems |
Wed 03/10 |
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)
|
Mon 03/15 |
Distributed File Systems: Ceph
|
Don's Notes. |
Ceph: A Scalable, High-Performance Distributed File System (Weil, Brandt, Miller, Long, and Maltzahn, OSDI '06) |
- CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data (Weil, Brandt, Miller, and Maltzahn, SC '06)
- File Systems Unfit as Distributed Storage Backends: Lessons from 10 Years of Ceph Evolution (Aghayev, Weil, Kuchnik, Nelson, Ganger, and Amvrosiadis, SOSP '19)
|
Wed 03/17 |
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/22 |
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/24 |
Write-Optimization and BetrFS
|
Review the second paper. Project Proposals Due by midnight |
- 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)
|
|
Mon 03/29 |
File Systems for Fast Storage
|
Don's notes. |
Performance and Protection in the ZoFS User-space NVM File System (Dong, Bu, Yi, Dong, and Chen, SOSP '19) |
- NOVA: A Log-structured File System for Hybrid Volatile/Non-volatile Main Memories (Xu and Swanson, FAST '16)
- SplitFS: Reducing Software Overheadin File Systems for Persistent Memory (Kadekodi, Lee, Kashyap, Kim, Kolli, and Chidambaram, SOSP '19)
|
Part 3: Concurrency |
Wed 03/31 |
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
|
Mon 04/05 |
Wellness Day, Class Canceled
|
|
|
|
Wed 04/07 |
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).
|
Part 4: Correctness |
Mon 04/12 |
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) |
Wed 04/14 |
File System Verification
|
Don's notes. |
Push-Button Verification of File Systems via Crash Refinement. (Sigurbjarnarson, Bornholt, Torlak, and Wang, OSDI '16) |
|
Part 5: Debugging |
Mon 04/19 |
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/21 |
Statistical Debugging
|
Don's notes |
Debugging in the (Very) Large: Ten Years of Implementation and Experience (Glerum et al., SOSP '09) |
|
Part 6: Security |
Mon 04/26 |
Reasoning about System Security
|
Don's Notes. |
- Logical Attestation: An Authorization Architecture for Trustworthy Computing (Sirer, Bruijn, Reynolds, Shieh, Walsh, Williams, Schneider, SOSP 2011)
- (Light) 17 Mistakes Microsoft Made in the Xbox Security System (Steil 2005)
|
- Authentication in Distributed Systems: Theory and Practice (Lampson, Abadi, Burrows, and Wobber, TOCS 1992)
- A Logic of Authentication (Burrows, Abadi, and Needham, TOCS 1990).
|
Wed 04/28 |
The Trusted Computing Base
|
Don's Notes. |
- Shielding Applications from an Untrusted Cloud with Haven (Baumann, Peinado, and Hunt, OSDI '14)
- Reflections on Trusting Trust (Thompson, Turing Award Lecture, 1984)
|
- Native Client: A Sandbox for Portable, Untrusted x86 Native Code (Yee, Sehr, Dardyk, Chen, Muth, Ormandy, Okasaka, Narula, Fullagar, Oakland 2009)
- Leveraging Legacy Code to Deploy Desktop Applications on the Web (Douceur, Elson, Howell, Lorch, OSDI 2008)
|
Mon 05/03 |
Project Presentations
|
|
|
|
Wed 05/05 |
Project Presentations
|
Final project report due via email to Don Porter by 5pm EDT. |
|
|