DEPARTMENT OF COMPUTING

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.

Last Updated 09/04/2024