Lecture Notes and Readings

Some of the readings require the xv6 code (PDF), as well as the xv6 book (PDF - 1.3MB), which are provided courtesy of Frans Kaashoek, Robert Morris, and Russ Cox and are used here with permission.

1 Operating Systems (PDF) "Chapter 0: Operating System Interfaces" of xv6 book
2 PC Hardware and x86 Programming (PDF) "Appendix A: PC Hardware" and "Appendix B: The Boot Loader" of xv6 book, and the related xv6 source files
3 Overview of Major Internals, System Call Interface (PDF) "Chapter 1: The first process" and the related xv6 source files
4 Virtual Memory (PDF)

"Chapter 2: Page Tables"

Page Table Translation and Registers (PDF)

5 Interrupts, Exceptions (PDF)

"Chapter 3: Traps, interrupts, and drivers" and the related xv6 source files


6 Multiprocessors and Locking (PDF) "Chapter 4: Locking" with spinlock.c and skim mp.c
7 Processes and Switching (PDF) "Chapter 5: Scheduling" up to "Sleep and wakeup" with proc.c, setjmp.S, and sys_fork (in sysproc.c)
8 Sleep & Wakeup (PDF) Read remainder of "Chapter 5: Scheduling"; read remainder of proc.c and sys_wait, sys_exit, sys_kill
9 File Systems (PDF) "Chapter 6: File system" and bio.c, fs.c, sysfile.c, file.c, except for the logging sections
10 Crash Recovery (PDF) Read log.c and the logging sections of "Chapter 6: File system"
11 File System Performance and Fast Crash Recovery (PDF) Tweedie, Stephen C. "Journaling the Linux ext2fs Filesystem." [Paper Presented at LinuxExpo 1998].
12 Project Introduction and Discussion  
13 OS Organization (PDF) Engler, Dawson R., M. Frans Kaashoek, and James O'Toole Jr. "Exokernel: An Operating System Architecture for Application-Level Resource Management."
14 In-class Hacking Session  
15 Project Conferences  
16 Project Conferences (cont.)  
17 Language / OS Co-design (PDF) Hunt, Galen C., and James R. Larus. "Singularity: Rethinking the Software Stack." Microsoft Research Redmond 41, no. 2 (2007): 37–49.
Quiz Quiz (Open Book and Notes)  
18 Scalable Locks (PDF) Boyd-Wickizer, Silas, M. Frans Kaashoek, et al. "Non-Scalable Locks are Dangerous."
19 Project Conferences  
20 Project Conferences (cont.) Boyd-Wickizer, Silas, Austin T. Clements, et al. "An Analysis of Linux Scalability to Many Cores."
21 Lock-free Coordination (PDF)  
22 Virtual Machines (PDF) Adams, Keith, and Ole Agesen. "A Comparison of Software and Hardware Techniques for x86 Virtualization." ACM Digital Library 34, no. 5 (2006): 2–13.
23 No lecture; work on final projects  
24 Demos in class  
25 Demos in class (cont.)