See below for the tentative class schedule!
CPUs: Pipelines, virtual memory, and interrupts
- Lecture 1 (January 26): Course introduction and overview of processor architecture
- Lecture 2 (January 28): x86-64 page tables
- Lecture 3 (February 2): Multitasking and preemption
- Lecture 4 (February 4): Interrupts
Synchronization: Ensuring correctness on single-core and multi-core machines
- Lecture 5 (February 9): Multithreading and synchronization
- Lecture 6 (February 11): Interrupts, concurrency, and synchronization
- Section 1 (Week of February 16): Kernel extensions
- NO CLASS: PRESIDENTS DAY (February 16)
- MIDTERM 1: IN CLASS (February 18)
- Lecture 7 (February 23): Wait queues
Interacting with hardware devices: Storage devices, file systems, DMA, memory-mapped IO
- Lecture 8 (February 25): Swapping and memory maps
- Section 2 (Week of March 2): The microkernel debate
- Lecture 9 (March 2): VFS
- Lecture 10 (March 4): Storage devices and data layout
- Lecture 11 (March 9): Journaling
- Lecture 12 (March 11): Device interactions
- NO CLASS: SPRING BREAK (March 16)
- NO CLASS: SPRING BREAK (March 18)
- Section 3 (Week of March 23): Optimizing context switches
- Lecture 13 (March 23): Log-structured file systems
- Lecture 14 (March 25): Synchronization and memory ordering
Security, Resource Isolation, and Advanced Systems Programming
- Lecture 15 (March 30): DAC, MAC, and iOS
- Lecture 16 (April 1): Writing kernels in high-level languages
- Section 4 (Week of April 6): Rethinking OS abstractions
- Lecture 17 (April 6): Scheduling
- NO CLASS: HACKING DAY (April 8)
- Lecture 18 (April 13): Virtualization
- Lecture 19 (April 15): Networking
- Lecture 20 (April 20): EthiCS
- Lecture 21 (April 22): GPUs
- Lecture 22 (April 27): Security
- MIDTERM 2: IN CLASS (April 29)