CS 3400: Operating Systems

Fall 2023 Topics Project Reading
Aug 21–25 introduction, os interfaces building and running xv6 xv6 ch 1, 3ep ch 1–2
Aug 28–Sep 1 processes and address spaces hello world OS xv6 ch 2, 3ep ch 3–5
Sep 4–8 (Labor Day) multicore, spinlocks
Sep 11–15 stacks, context coroutines mini-kernel xv6 ch 3, 3ep ch 12–15
Sep 18–22 synchronization locks 3ep ch 16–24
Sep 25–29 interrupts, context switching kernel threads, scheduling xv6 ch 4
Oct 2–6 virtual memory userspace, paging xv6 ch 5
Oct 9–13 (Fall break)
Oct 16–20 fork and exec, page tables modes, system calls xv6 ch 6, 3ep ch 25–30
Oct 23–27 3ep ch 31–34
Oct 30–Nov 3 userspace threads tour rest of xv6 xv6 ch 7, 3ep ch 6–7
Nov 6–10 userspace memory management 3ep ch 8–11
Nov 13–17 file systems xv6 ch 8, 3ep ch 35–38
Nov 20–24 (Thanksgiving) malloc and free 3ep ch 39–46
Nov 27–Dec 1 distributed file systems xv6 ch 9, 3ep ch 47–51
Dec 4–8

Changes to the schedule will be announced in class.

“xv6” refers to the xv6 commentary book, our guide to the xv6 operating system source code.

“3ep” refers to Operating Systems: Three Easy Pieces, our (free) primary text.


To install the tools you need for this class using Debian 12 “Bookworm”:

sudo apt install git build-essential gcc-riscv64-linux-gnu gdb-multiarch qemu-system-misc

To start with a fresh instance of xv6:

git clone

In the main directory you should be able to run make qemu to build and launch the system. Typing ctrl-a x will quit.

Presentation choices

Last Updated 01/06/2024