- Instructors: Eddie Kohler
- Textbook: no mandatory texts, recommend ones:
- Operating Systems In Depth: Design and Programming (was a required textbook)
- Understanding the Linux Kernel (old version of Linux)
- URL: https://read.seas.harvard.edu/cs161-18/
- Course introduction
- x86-64 page tables
- Task switching and %gs register
- Boot process and memory layout
- (Exercises)
- Task switching exercises
- Buddy allocator testing
- Wait queues
- Debugging in real operating systems
- Virtual file system design
- File system disk structures
- Lambdas, virtual functions, and reference counting
- VFS design tournament
- File system correctness and speed
- NCQ and journal design
- Large-scale file systems and GFS
- Scheduling and BVT
- System call performance
- Lock design
- Multicore
- MESI protocol
- Cacheline bouncing problem
- False sharing
- Atomic instruction
- Spinlock
- Memory models
- Ticket lock
- Scalable and read-write locks
- Locking characteristics
- Throughput vs. latency
- Simple lock
- Ticket lock
- MCS lock
- Futex
- Read-write locking
- RCU
- RCU implementation
- System call design, file system invariants
- Networking
- (Special seminar: Mothy Roscoe talk)
- Virtualization
- Meltdown
- The microkernel debate
- Kernels and programming languages
- Kernel and file system bugs
- Scalability
- Containers