CPUs: Pipelines, virtual memory, and interrupts
- Lecture 1 (January 24): Course introduction and overview of processor architecture
- Lecture 2 (January 26): x86-64 page tables
- Lecture 3 (January 31): Multitasking and preemption
- Lecture 4 (February 2): Interrupts
Synchronization: Ensuring correctness on single-core and multi-core machines
- Section 1 (Week of February 7): Kernel extensions
- Lecture 5 (February 7): Multithreading and synchronization
- Lecture 6 (February 9): Interrupts, concurrency, and synchronization
- Lecture 7 (February 14): Wait queues
- MIDTERM 1: IN CLASS (February 16)
Interacting with hardware devices: Storage devices, file systems, DMA, memory-mapped IO
- Section 2 (Week of February 21): The microkernel debate
- NO CLASS: PRESIDENTS DAY (February 21)
- Lecture 8 (February 23): Swapping and memory maps
- Lecture 9 (February 28): VFS
- Lecture 10 (March 2): Storage devices and data layout
- Section 3 (Week of March 7): Optimizing context switches
- Lecture 11 (March 7): Journaling
- Lecture 12 (March 9): Device interactions
- Section 4 (Week of March 21): Scalability and OS design
- Lecture 13 (March 21): Log-structured file systems
- Lecture 14 (March 23): Synchronization and memory ordering
Security, Resource Isolation, and Advanced Systems Programming