Lectures

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.

SlidesFull recordingCode

Virtualisation: processes and the CPU

Lectures 1–8
Lecture 01

Introduction and logistics

Lecture 02

The process

Lecture 03

The process API (fork, wait, exec)

Lecture 04

Revisiting the Linux shell

Lecture 05

CPU scheduling policies

Lecture 06

CPU scheduling: MLFQ

Lecture 07

MLFQ and limited direct execution

Lecture 08

Limited direct execution and memory virtualisation

Virtualisation: memory

Lectures 9–16
Lecture 09

Memory management: introduction

Lecture 10

Base and bounds, and segmentation

Lecture 11

Segmentation and paging

Lecture 12

Paging and TLBs

Lecture 13

TLBs and advanced paging

Lecture 14

Advanced paging and swapping

Lecture 15

Swapping

Lecture 16

Swapping and free-space management

Memory management in Linux

Concurrency

Lectures 17–26
Lecture 17

Concurrency and threads

Lecture 18

Quiz discussion; threads and locks

Lecture 19

Locks

Lecture 20

Advanced locks

Lecture 21

Condition variables

Lecture 22

Condition variables (advanced)

Lecture 23

Condition variables and semaphores

Lecture 24

Semaphores and deadlocks

Lecture 25

Common concurrency problems

Lecture 26

Semaphores revision and common concurrency problems

Persistence

Lectures 27–32
Lecture 27

I/O devices and hard disks

Lecture 28

Hard disks and RAID

Lecture 29

RAID (continued)

Lecture 30

Files and directories

Lecture 31

File systems (continued)

Lecture 32

File system implementation

Slides are the PDFs used in class. Recordings are full class videos from the 2018 offering.