Course Schedule

A (tentative) schedule for the semester:

(LKD Book: Linux Kernel Development, 3rd Edition, 2010.)

Week Date Topic Readings Assignments
1 08/25 Intro to OS, OS structure, and toolchains, kernel debugging, kernel code exploration/browsing, and exploring the xv6 kernel. Chapter 0 of the xv6 book hw0: readiness exercise (Due: 09/01)
2 09/01 Isolation, system calls, kernel booting. Appendix B, and Chapter 1 of the xv6 book hw1: utilities and system calls (Due: 09/12)
3 09/08 Memory management, paging. Chapter 2 of the xv6 book hw2: boot loading exercise (Due: 09/19)
4 09/15 Virtual memory, mmap. Chapter 2 of the xv6 book hw3: page table (Due: 09/26)
5 09/22 Page replacement, kalloc, interrupts Chapter 3 of the xv6 book hw4 (part 1): page table deduplication (Due: 10/03)
6 09/29 Midterm 1; Device drivers Chapter 3 of the xv6 book hw4 (part 2): Copy-on-Write (CoW) (Due: 10/10)
7 10/06 Device drivers; Life of a process Chapter 5 of the xv6 book hw5 : Device drivers for console and display (Due: 10/17)
8 10/13 Scheduling, context switch, threads Chapter 5 of the xv6 book final project proposal (optional for undergraduate students) (Due: 10/28)
9 10/20 concurrency, implement lock, deadlock Chapter 4 of the xv6 book
10 10/27 Barriers, conditional variables, futex, and signal
11 11/03 Midterm 2; Intro to file systems Chapter 6 of the xv6 book
12 11/10 Intro to file systems Chapter 6 of the xv6 book
13 11/17 File systems failure and persistence Chapter 6 of the xv6 book
14 11/24 Multi-core, kernel security, OS virtualization
15 12/01 Intro to Linux kernel, recent topics in OS design