CS 3400: Operating Systems
Fall 2025 | Topics | Project | Reading |
Aug 18–22 | introduction, os interfaces | building and running xv6 | xv6 ch 1, 3ep ch 1–2 |
Aug 25–29 | processes and address spaces | hello world OS | xv6 ch 2, 3ep ch 3–5 |
Sep 1–5 (Labor Day) | multicore, spinlocks | ||
Sep 8–12 | stacks, context | coroutines mini-kernel | xv6 ch 3, 3ep ch 12–15 |
Sep 15–19 | synchronization | locks | 3ep ch 16–24 |
Sep 22–26 | interrupts, context switching | kernel threads, scheduling | xv6 ch 4 |
Sep 29–Oct 3 | virtual memory | userspace, paging | xv6 ch 5 |
Oct 6–10 (Fall Break) | |||
Oct 13–17 | fork and exec, page tables | modes, system calls | xv6 ch 6, 3ep ch 25–30 |
Oct 20–24 | 3ep ch 31–34 | ||
Oct 27–31 | userspace threads | tour rest of xv6 | xv6 ch 7, 3ep ch 6–7 |
Nov 3–7 | userspace memory management | 3ep ch 8–11 | |
Nov 10–14 | file systems | xv6 ch 8, 3ep ch 35–38 | |
Nov 17–21 | malloc and free | 3ep ch 39–46 | |
Nov 24–28 (Thanksgiving) | |||
Dec 1–5 | distributed file systems | xv6 ch 9, 3ep ch 47–51 |
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. Here is the updated schedule for Fall 2025:
Resourses
Linux users
To install the tools you need for this class using Debian:
sudo apt install git build-essential gcc-riscv64-linux-gnu gdb-multiarch qemu-system-misc
Note: make sure you have an up-to-date Linux distribution. Notably Ubuntu 22.04 is too old.
MacOS users
Homebrew is a command line tool for MacOS for installing open source software. If you do not already have it, install it here:
From the terminal, start by adding the repository that contains the RISC-V development tools:
brew tap riscv-software-src/riscv
Next install the tools:
brew install riscv-gnu-toolchain
To install qemu:
brew install qemu
If you have an Intel-based Mac, you may also need to run:
brew install riscv-tools
Installing xv6
To start with a fresh instance of xv6:
git clone https://github.com/mit-pdos/xv6-riscv.git
In the main directory you should be able to run make qemu
to build and launch
the system. Typing ctrl-a x
will quit.
Last Updated 08/22/2025