I will update the notes as the course progresses. The lecture notes may help you remember the lecture content, but they are not a replacement for attending lectures.

I'll screen-record lectures and post a link to them, but keep in mind that sometimes technical difficulties cause problems with those recordings.

MondayTuesday WednesdayThursday
Jan 21 Jan 22
Jan 23
LEC 1: Operating systems (slides, video—no sound) (handouts: xv6 source, xv6 book)
Preparation: Unix intro
Assignment: Lab 1: C, Assembly, Tools, and Bootstrapping
Jan 24
Jan 28
LEC 2: PC hardware and x86 programming (slides, video)
Preparation: Read Bootstrap/PC hardware appendices and the related xv6 source files
Assignment: HW 1: Boot xv6
Jan 29 Jan 30
LEC 3: C and gdb (slides, video—missing video from 15 min. on))
Due: HW 1: Boot xv6
Preparation: Read 2.9 (Bitwise operators), 5.1 (Pointers and Addresses) through 5.5(Character Pointers and Functions) and 6.4 (pointers to structures) in K&R
Assignment: HW 2: shell
Assignment: Lab 2: Memory management
Jan 31
DUE: Lab 1
Feb 4
LEC 4: Shell & OS organization (slides, video)
Preparation: Read chapter 0 of the xv6 book.
Read chapter 5 of the OS: 3 Easy Pieces book.
Due: HW 2: shell
Assignment:HW 3: system calls
Feb 5 Feb 6
LEC 5: Isolation mechanisms (slides, video with missing audio)
Preparation: Read "Chapter 1: Operating system organization" and the related xv6 source files
Feb 7
Feb 11
LEC 6: Virtual memory (1) (Handout: page table translation and register, slides, video)
Preparation: Read "Chapter 2: Page Tables"
Due: HW 3: system calls
Assignment: HW 4: lazy page allocation
Feb 12 Feb 13
LEC 7: Virtual memory (2) (Handout: JOS virtual memory layout, JOS UPVT, slides, video)
Due: HW 4: lazy page allocation
Assignment: HW 5: xv6 CPU alarm
Assignment: Lab 3: User-Level Environments
Feb 14
DUE: Lab 2
Feb 18
LEC 8: System calls, interrupts, exceptions (handouts: IDT) (slides, video)
Preparation: Read "Traps, interrupts, and drivers" and the related xv6 source files
Due: HW 5: xv6 CPU alarm
Assignment: HW 6: threads and locking
Feb 19 Feb 20
LEC 9 (ab): Multiprocessors and locking (slides, video)
Preparation: Read "Locking" with spinlock.c and skim mp.c
Due: HW 6: threads and locking
Assignment: HW 7: xv6 locks
Feb 21
DUE: Lab 3 (Part A)
Feb 25
LEC 10: Processes and switching (slides, video)
Preparation: Read "Scheduling" up to "Sleep and wakeup" and proc.c, swtch.S
Due: HW 7: xv6 locks
Assignment: HW 8: xv6 uthreads
Feb 26 Feb 27
LEC 11: sleep&wakeup (slides, video)
Preparation: Read remainder of "Scheduling", and corresponding parts of proc.c
Due: HW 8: xv6 uthreads
Assignment: Lab 4: Preemptive multitasking
Assignment: HW 9: barriers
Feb 28
DUE: Lab 3 (Part B)
Mar 4
LEC 12: File systems (1/2) (slides, video)
Preparation: Read bio.c, fs.c, sysfile.c, file.c and "File system" except for the logging sections
Due: HW 9: barriers
Assignment: HW 10: big files
Mar 5 Mar 6
LEC 13:File systems (2/2) (slides, video)
Due: HW 10: big files
Assignment: HW 11: xv6 log
Assignment: Lab 6: Networking
Assignment: Lab 7: Final project
Mar 7
DUE: Lab 4 (Part A)
Mar 11
Midterm open book and notes
scope: Lectures 1 through 13, HW 1 through 10, labs 1 through 3, lectures through Mar 6
further information and practice exams (Midterm Solution)
Mar 12 Mar 13
Lec 14: Review midterm (video)
Assignment: Lab 5: File system, spawn, and sh
Mar 14
DUE: Lab 4 (Part B)
Last day to drop
Mar 18-22
Spring break
Mar 25
LEC 15:Crash recovery (slides, video)
Preparation: Read log.c and the logging sections of "File system"
Mar 26 Mar 27
LEC 16: File system performance and fast crash recovery (slides, no video)
Preparation: Read Journaling the Linux ext2fs Filesystem (1998)
Due: HW 11: xv6 log
Assignment: HW 12: mmap()
Mar 28
DUE: Lab 4 (Part C)
DUE: Final project piazza discussion
Apr 1
LEC 17:Zettabyte File System (ZFS) (slides, video)
Preparation: Read The Zettabyte File System
Apr 2 Apr 3
LEC 18:Virtual Memory (3) (slides, video)
Preparation: Read Virtual Memory Primitives for User Programs (1991)
Due: HW 12: mmap
Apr 4
DUE: Final project proposal
Apr 8
LEC 19:OS Organization, (slides, video)
Preparation: Read Exokernel (1995)
Due: HW 13: exokernel questions
Apr 9 Apr 10
LEC 20:Kernels and HLL, (slides, video)
Preparation: Read Biscuit paper (2018)
Due: HW 14: biscuit questions
Apr 11
DUE: Lab 5
Apr 15
LEC 21:Scalable Locks (slides, video)
Preparation: Read Non-scalable locks paper (2012))
Due: HW 15: ticket lock questions
Apr 16 Apr 17
LEC 22:Scaling OSes (slides, video)
Preparation: Read RCU (2013)
Due: HW 16: RCU questions
Apr 18
Apr 22
LEC 23:Virtual Machines (1) (Slides, video)
Preparation: Read Software vs Hardware Virtualization (2006)
Due: HW 17: VM questions
Apr 23 Apr 24
LEC 24:Virtual Machines (2) (Slides, video)
Preparation: Read Dune: Safe User-level Access to Privileged CPU Features (2012)
Due: HW 18: Dune questions
Apr 25
Apr 29
LEC 25:High-performance networking (Slides, video)
Preparation: Read IX: A Protected Dataplane Operating System for High Throughput and Low Latency (2014)
Due: HW 19: IX questions
Apr 30 May 1
LEC 26:Optimize your Financial Life (Slides, video)
Bonus: Slides for Optimize your Engineering Life
For all: take-home final handed out (More info on final)
May 2
DUE: Lab 6 or 7
May 3 or 6: demo to instructor (only if doing Lab 7)
May 6-8
Presentation days
May 9
For seniors: Final due at 7 PM under my door in Olin 1255
May 13
Finals week
May 14
Finals week
May 15
For non-seniors: Final due at 5 PM under my door in Olin 1255
May 16
Finals week


This is derivative work based on MIT 6.828 used under Creative Commons License.

Creative Commons License Top // CS 134 home // Last updated Tue May 14 07:12:46 PDT 2019