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 3 of LKD
5 09/22 Page replacement, kalloc
6 09/29 Context switch, page table switch Chapter 5 of the xv6 book
7 10/06 Life of a process, scheduling
8 10/13 Thread, concurrency Chapter 4 of the xv6 book
9 10/20 Implement lock, deadlock
10 10/27 Barriers, conditional variables, futex, and signal
11 11/03 Intro to file system
12 11/10 File system failure and persistence Chapter 6 of the xv6 book
13 11/17 Device drivers Chapter 3 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