The course follows the three parts of Operating Systems: Three Easy Pieces : virtualisation, concurrency and persistence. Each lecture links its slides and its class recording; lectures 15 to 17 were not recorded. Programs shown in class are in the code folder .
Virtualisation: processes and the CPU1–8 Virtualisation: memory9–16 Concurrency17–26 Persistence27–32
Virtualisation: processes and the CPU Lectures 1–8
Lecture 01Introduction and logistics
Lecture 02The process
Lecture 03The process API (fork, wait, exec)
Lecture 04Revisiting the Linux shell
Lecture 05CPU scheduling policies
Lecture 06CPU scheduling: MLFQ
Lecture 07MLFQ and limited direct execution
Lecture 08Limited direct execution and memory virtualisation
Virtualisation: memory Lectures 9–16
Lecture 09Memory management: introduction
Lecture 10Base and bounds, and segmentation
Lecture 11Segmentation and paging
Lecture 12Paging and TLBs
Lecture 13TLBs and advanced paging
Lecture 14Advanced paging and swapping
Lecture 15Swapping
Lecture 16Swapping and free-space management
· Memory management in Linux
Concurrency Lectures 17–26
Lecture 17Concurrency and threads
Lecture 18Quiz discussion; threads and locks
Lecture 19Locks
Lecture 20Advanced locks
Lecture 21Condition variables
Lecture 22Condition variables (advanced)
Lecture 23Condition variables and semaphores
Lecture 24Semaphores and deadlocks
Lecture 25Common concurrency problems
Lecture 26Semaphores revision and common concurrency problems
Persistence Lectures 27–32
Lecture 27I/O devices and hard disks
Lecture 28Hard disks and RAID
Lecture 29RAID (continued)
Lecture 30Files and directories
Lecture 31File systems (continued)
Lecture 32File system implementation
Slides are the PDFs used in class. Recordings are full class videos from the 2018 offering.