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.
Resourses
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 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.
Presentation choices
- QNX (Nico, Tom, Brendan)
- VAX/VMS (Thomas, Chaz, Ryan L, Ryan R)
- Windows NT (Brevin, Jack, Calvin)
- ENIAC (Colby, Lexi)
- Multics (Max, Ben, Alyssa, Jerusalem)
- IBM System/360 (Hyrum, Ash, Jarod, Spencer)
- Plan 9 (Liam, Dason, Porter)
- EDSAC (Ryan C, Keaton, Gabe)
Last Updated 01/06/2024