CS 3400: Operating Systems
Fall 2024 | Topics | Project | Reading |
Aug 19–23 | introduction, os interfaces | building and running xv6 | xv6 ch 1, 3ep ch 1–2 |
Aug 26–30 | processes and address spaces | hello world OS | xv6 ch 2, 3ep ch 3–5 |
Sep 2–6 (Labor Day) | multicore, spinlocks | ||
Sep 9–13 | stacks, context | coroutines mini-kernel | xv6 ch 3, 3ep ch 12–15 |
Sep 16–20 | synchronization | locks | 3ep ch 16–24 |
Sep 23–27 | interrupts, context switching | kernel threads, scheduling | xv6 ch 4 |
Sep 30–Oct 4 | virtual memory | userspace, paging | xv6 ch 5 |
Oct 7–11 | |||
Oct 14–18 (Fall Break) | fork and exec, page tables | modes, system calls | xv6 ch 6, 3ep ch 25–30 |
Oct 21–25 (Fall Break) | 3ep ch 31–34 | ||
Oct 28–Nov 1 | userspace threads | tour rest of xv6 | xv6 ch 7, 3ep ch 6–7 |
Nov 4–8 | userspace memory management | 3ep ch 8–11 | |
Nov 11–15 | file systems | xv6 ch 8, 3ep ch 35–38 | |
Nov 18–22 | malloc and free | 3ep ch 39–46 | |
Nov 25–29 (Thanksgiving) | distributed file systems | xv6 ch 9, 3ep ch 47–51 | |
Dec 2–6 (Thursday last day) |
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.
Resourses
Linux users
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
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.
Linux presentation topics
- eBPF (Paula, Marco, ??)
- btrfs (Ethan, ??, ??)
- kernel module system (Carter, Christian, ??)
Last Updated 12/04/2024