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