Course taken in the period of 2022 Shanghai COVID-19 lockdown
-
LEC 1: Introduction and examples (handouts: xv6 book; 2020: notes, video)
- Preparation: Read chapter 1 (for your amusement: Unix)
- Assignment: Lab util: Unix utilities
-
- Preparation: 2.9 (Bitwise operators) and 5.1 (Pointers and addresses) through 5.6 (Pointer arrays) and 6.4 (pointers to structures) by Kernighan and Ritchie (K&R)
-
LEC 3: OS organization and system calls (2020: notes, boards, video)
- Preparation: Read chapter 2 and xv6 code: kernel/proc.h, kernel/defs.h, kernel/entry.S, kernel/main.c, user/initcode.S, user/init.c, and skim kernel/proc.c and kernel/exec.c
- Assignment: Lab syscall: System calls
-
LEC 4: Page tables (2020: notes, boards, video)
- Preparation: Read Chapter 3 and kernel/memlayout.h, kernel/vm.c, kernel/kalloc.c, kernel/riscv.h, and kernel/exec.c
-
LEC 5: GDB, calling conventions and stack frames RISC-V (2020: notes, boards, video)
- Preparation: Read Calling Convention
- Assignment: Lab pgtbl: Page tables
-
LEC 6: Isolation & system call entry/exit (2020: notes, video)
- Preparation: Read Chapter 4, except 4.6 and kernel/riscv.h, kernel/trampoline.S, and kernel/trap.c
-
LEC 7: Page faults (2020: notes, boards, video)
- Preparation: Read Section 4.6
- Assignment: Lab traps: Traps
-
LEC 8: Q&A labs
-
LEC 9: Interrupts (2020: notes, boards, video)
- Preparation: Read Chapter 5 and kernel/kernelvec.S, kernel/plic.c, kernel/console.c, kernel/uart.c, kernel/printf.c
- Assignment: Lab cow: Copy-on-write fork
-
LEC 10: Multiprocessors and locking (2020: notes, boards, video)
- Preparation: Read "Locking" with kernel/spinlock.h and kernel/spinlock.c
-
LEC 11: Scheduling 1 (2020: notes, video)
- Preparation: Read "Scheduling" through Section 7.4, and kernel/proc.c, kernel/swtch.S
-
LEC 12: Scheduling 2 (2020: notes, code, video)
- Preparation: Read remainder of "Scheduling", and corresponding parts of kernel/proc.c, kernel/sleeplock.c
- Assignment: Lab thread: Multithreading
-
LEC 13: Q&A labs
-
LEC 14: File systems (2020: notes, boards, video)
- Preparation: Read kernel/bio.c, kernel/fs.c, kernel/sysfile.c, kernel/file.c and "File system" (except for the logging sections)
- Assignment: Lab net: Network driver
-
LEC 15: Crash recovery (2020: notes, boards, video)
- Preparation: Read kernel/log.c and the logging sections of "File system"
-
LEC 16: File system performance and fast crash recovery (2020: notes, video)
- Preparation: Read Journaling the Linux ext2fs Filesystem (1998)
-
LEC 17: Virtual memory for applications (2020: notes, boards, video) (baker example)
- Preparation: Read Virtual Memory Primitives for User Programs (1991)
-
LEC 18: OS Organization (2020: notes, video)
- Preparation: Read The Performance of micro-Kernel-Based Systems (1997)
- Assignment: Lab lock: Parallelism/locking
-
LEC 19: Virtual Machines (2020: notes, video)
- Preparation: Read Dune: Safe User-level Access to Privileged CPU Features (2012)
-
LEC 20: Kernels and HLL (2020: notes, slides, video)
- Preparation: Read the Biscuit paper (2018), FAQ
- Assignment: Lab fs: File system
-
LEC 21: Networking (2020: notes, video)
- Preparation: Read Receive Livelock (1996)
- Assignment: Lab mmap: Mmap
-
LEC 22: Meltdown (2020: notes, video)
- Preparation: Read Meltdown (2018)
-
LEC 23: Multi-Core scalability and RCU (2020: notes, video)
- Preparation: Read RCU paper (2013), FAQ
-
LEC 24: Current Research: Radiation Tolerance
- Preparation: Read NASA CALIPSO paper (2006) for background