Operating System Trade-Offs: Performance, Extensibility, and Security



Perusall is collaborative annotation tool we’ll be using to read the papers assigned for this course. For each reading, you are required to add five (5) annotations, questions, or responses. You’ll be able to see each others comments and respond.

Annotations for readings in Perusall are always due noon, Princeton time, the day before class.

Registering for Perusall

What is an Operating System?

  1. The Design of the Venus Operating System, Barbara Liskov

Monolithic Kernels

  1. The UNIX Time-Sharing System, Dennis M. Ritchie & Ken Thompson
  2. POSIX Abstractions in Modern Operating Systems: The Old, the New, and the Missing, Vaggelis Atlidakis, Jeremy Andrus, Roxana Geambasu, Dimitris Mitropoulos, and Jason Nieh


  1. Toward real microkernels, Jochen Liedtke
  2. seL4: Formal Verification of an OS Kernel, Gerwin Klein, Kevin Elphinstone, Gernot Heiser, June Andronick, David Cock, Philip Derrin, Dhammika Elkaduwe, Kai Engelhardt, Rafal Kolanski, Michael Norrish, Thomas Sewell, Harvey Tuch, Simon Winwood

Extensible Kernels

  1. Exokernel: An Operating System Architecture for Application-Level Resource Management, Dawson R. Engler, M. Frans Kaashoek, and James O’Toole Jr
  2. Extensibility, Safety and Performance in the SPIN Operating System, Brian N. Bershad, Stefan Savage, Przemysław Pardyak, Emin Gün Sirer, Marc E. Fiuczynski, David Becker, Craig Chambers, Susan Eggers
  3. Multiprogramming a 64 kB Computer Safely and Efficiently, Amit Levy, Bradford Campbell, Branden Ghena, Daniel B. Giffin, Pat Pannuto, Prabal Dutta, Philip Levis

High Performance Kernels

  1. IX: A Protected Dataplane Operating System for High Throughput and Low Latency, Adam Belay, George Prekas, Ana Klimovic, Samuel Grossman, Christos Kozyrakis, Stanford University, Edouard Bugnion

Distributed Systems

  1. Spanner: Google’s Globally-Distributed Database, James C. Corbett, Jeffrey Dean, Michael Epstein, Andrew Fikes, Christopher Frost, JJ Furman, Sanjay Ghemawat, Andrey Gubarev, Christopher Heiser, Peter Hochschild, Wilson Hsieh, Sebastian Kanthak, Eugene Kogan, Hongyi Li, Alexander Lloyd, Sergey Melnik, David Mwaura, David Nagle, Sean Quinlan, Rajesh Rao, Lindsay Rolig, Yasushi Saito, Michal Szymaniak, Christopher Taylor, Ruth Wang, and Dale Woodford

  2. Don’t settle for eventual: scalable causal consistency for wide-area storage with COPS, Wyatt Lloyd, Michael J. Freedman, Michael Kaminsky, David G. Andersen

Language-based approaches

  1. Singularity: rethinking the software stack, Galen C. Hunt, James Larus
  2. Native Client: A Sandbox for Portable, Untrusted x86 Native Code, Bennet Yee, David Sehr, Gregory Dardyk, J. Bradley Chen, Robert Muth, Tavis Ormandy, Shiki Okasaka, Neha Narula, Nicholas Fullagar
  3. Bringing the Web up to Speed with WebAssembly, Andreas Haas, Andreas Rossberg, Derek L. Schuff, Ben L. Titzer, Michael Holman, Dan Gohman, Luke Wagner, Alon Zakai, JF Bastien
  4. Comet: An active distributed key-value store, Roxana Geambasu, Amit Levy, Tadayoshi Kohno, Arvind Krishnamurthy, Henry M. Levy
  5. Splinter: Bare-Metal Extensions for Multi-Tenant Low-Latency Storage, Chinmay Kulkarni, Sara Moore, Mazhar Naqvi, Tian Zhang, Robert Ricci, and Ryan Stutsman


  1. Active network vision and reality: lessions from a capsule-based system, David Wetherall
  2. Ethane: Taking Control of the Enterprise, Martìn Casado, Michael J. Freedman, Justin Pettit, Jianying Luo, Nick McKeown, Scott Shenker
  3. The road to SDN: an intellectual history of programmable networks, Nick Feamster, Jennifer Rexford, Ellen Zegura
  4. NetBricks: Taking the V out of NFV, Aurojit Panda and Sangjin Han, Keon Jang, Melvin Walls, Sylvia Ratnasamy, Scott Shenker


  1. Making Information Flow Explicit in HiStar, Nickolai Zeldovich, Silas Boyd-Wickizer, Eddie Kohler, and David Mazi`eres
  2. The Scalable Commutativity Rule: Designing Scalable Software for Multicore Processors, Austin T. Clements, Frans Kaashoek, Nickolai Zeldovich, Robert Tappan Morris, Eddie W Kohler