Resources
- Assignments will be collected via CMS
- Epidemic algorithms for replicated database maintenance
- Paxos made simple
- Bitcoin: A Peer-to-Peer Electronic Cash System
- End-to-end arguments in system design
- The Design and Implementation of a Log-Structured File System
- On the duality of operating system structures
- Exokernel: an operating system architecture for application-level resource management
- Xen and the Art of Virtualization
- Running Commodity Operating Systems on Scalable Multiprocessors
- The Google file system
- Spanner: Google’s Globally Distributed Database
- MapReduce: Simplified Data Processing on Large Clusters
- Time, Clocks, and the Ordering of Events in a Distributed System
- Distributed snapshots: determining global states of distributed systems
- Implementing fault-tolerant services using the state machine approach: A tutorial
- Chain replication for high throughput and availability
- Impossibility of Distributed Consensus with One Faulty Process
- Chord: A scalable peer-to-peer lookup service for internet applications
- Dynamo: Amazon’s Highly Available Key-Value Store
- Congestion Avoidance and Control
- seL4: formal verification of an OS kernel
- An Analysis of Linux Scalability to Many Cores
- The Multikernel: A new OS architecture for scalable multicore systems
- Capriccio: Scalable Threads for Internet Services
- The benefits and costs of writing a POSIX kernel in a high-level language
- Mesos: A Platform for Fine-Grained Resource Sharing in the Data Center
- Apache Spark: A Unified Engine for Big Data Processing
- Pregel: A System for Large-Scale Graph Processing
- TensorFlow: A System for Large-Scale Machine Learning
- Serverless Computation with OpenLambda
- Occupy the Cloud: Distributed Computing for the 99%
- Arrakis: The Operating System is the Control Plane
- OpenFlow: Enabling Innovation in Campus Networks
- TaintDroid: An Information-Flow Tracking System for Realtime Privacy Monitoring on Smartphones
- Internet Time Synchronization: The Network Time Protocol
The course is mostly based on published papers.
Suggested Additional readings:
- On Operating Systems Implementation:
- The Design and Implementation of the 4.4 BSD Operating System. , McCusick et. al., Addison Wesley, 1996.
- Understanding the Linux Kernel, Daniel P. Bovet, Marco Cesati, O’Reilly, 2000.
- On concurrent programming:
- An introduction to programming with threads, Andrew Birrell, Research Report 35, Digital Equipment Corporation Systems Research Center, 1989.
- The Little Book of Semaphores, Allen B. Downey.
- On networking:
- We recommend Computer Networking: A Top-Down Approach, Kurose and Ross.