Operating Systems

This is an online course on operating systems design, one of the important courses that lay the foundation for computer science and engineering.

Course Syllabus

Episode 1: Introduction

Lecture slides

Lecture 1 video

Episode 2, Part 1: OS: a bird’s-eye view (Part 1)

Lecture slides

Lecture 2 video

Source code from the live demo: intro-code.zip

Required reading after class: Chapter 2: Introduction to Operating Systems

Episode 2, Part 2: OS: a bird’s-eye view (Part 2)

Lecture slides

Lecture 3 video

Lecture 4 video

Required reading after class: Chapter 6: (Mechanism: Limited Direct Execution) 6.1, 6.2, 6.3 (before “Saving and Restoring Context”)

Episode 3: Processes

Lecture slides

Lecture 5 video

Required reading after class: Chapter 4 (The Abstraction: The Process), Chapter 5 (Interlude: Process API)

Source code from the live demo about the process API: process-code.zip

Episode 4: Threads: An Instant Primer

Lecture slides

Lecture 6 video

Required reading after class: Chapter 26 (Concurrency: An Introduction): 26.3, 26.4, 26.5, 26.6, 26.7

Episode 5: Race Conditions

Lecture slides

Lecture 7 video

Required reading after class: Chapter 28 (Locks): 28.1 – 28.8, 28.13 – 28.14

Episode 6: Semaphores: A First Cut

Lecture slides

Lecture 8 video

April 27 2022

Lecture 9 video

Required reading after class: Chapter 31: “Semaphores”, 31.1-31.4, 31.7

Episode 7: Threads and Context Switching in BLITZ

Lecture slides

Lecture 10 video

The Thread Scheduler and Concurrency Control Primitives,” pages 1-31 on the Thread Scheduler; Lab 2 source code: Synch.c, Synch.h, Thread.c, Thread.h, Runtime.s, Switch.s

Episode 8: Monitors and Condition Variables

Lecture slides

Lecture 11 video

Lecture 12 video

Required reading after class: Chapter 30 (Condition Variables)

Episode 9: The Dining Philosophers

Lecture slides

Lecture 13 video

Required reading after class: Chapter 31.6 (The Dining Philosophers)

Episode 10: The Sleeping Barber

Lecture slides

Lecture 14 video

Episode 11: Threads: A Deep Dive

Lecture slides

Lecture 15 video

Lecture 16 video

Required reading after class: Chapter 26.1 and 26.2 (Concurrency: An Introduction)

Episode 12: Context Switching: A Deep Dive

Lecture slides

Lecture 17 video

Lecture 18 video

Episode 13: Scheduling Policies: Introduction

Lecture slides

Lecture 19 video

Required reading after class: Chapter 7 (Scheduling: Introduction)

Episode 14: MLFQ Scheduling Download MLFQ Scheduling

Lecture slides

Lecture 20 video

Required reading after class: Chapter 8 (Scheduling: MLFQ), the Linux O(1) CPU Scheduler

Episode 15: Proportional Share Scheduling

Lecture slides

Lecture 21 video

Episode 16: Multiprocessor Scheduling

Lecture slides

Lecture 22 video

Required reading after class: Chapter 9 (Lottery Scheduling), Chapter 10 (Multiprocessor Scheduling)

Episode 17: Virtualizing Memory: Introduction

Lecture slides

Lecture 23 video

Required reading after class: Chapter 13 (The Abstraction: Address Spaces), Chapter 15 (Mechanism: Address Translation)

Episode 18: Segmentation

Lecture slides

Lecture 24 video

Required reading after class: Chapter 16 (Segmentation)

Episode 19: Free Space Management

Lecture slides

Lecture 25 video

Required reading after class: Chapter 17 (Free Space Management)

Episode 20: Paging: Introduction

Lecture slides

Lecture 26 video

Required reading after class: Chapter 18 (Paging: Introduction)

Episode 21: Paging: Smaller Tables

Lecture slides

Lecture 27 video

Required reading after class: Chapter 20 (Paging: Smaller Tables)

Episode 22: Paging: Faster Translations

Lectuer slides

Lecture 28 video

Required reading after class: Chapter 19 (Paging: Faster Translations)

Episode 23: Beyond Physical Memory

Lectuer slides

Lecture 29 video

Lecture 30 video

Lecture 31 video

Required reading after class: Chapter 21 (Beyond Physical Memory: Mechanisms), Chapter 23 (Complete Virtual Memory Systems)

Episode 24: Page Replacement

Lecture slides

Lecture 32 video

Lecture 33 video

Lecture 34 video

Required reading after class: Chapter 22 (Beyond Physical Memory: Policies)

Episode 25: File System Implementation

Lecture slides

Lecture 35 video

Lecture 36 video

Lecture 37 video

Required reading after class: Chapter 37.1-37.3 (Hard Disk Drives), Chapter 39 (Files and Directories), 40 (File System Implementation)

Episode 26: Journaling File Systems

Lecture slides

Lecture 38 video

Required reading after class: Chapter 42 (FSCK and Journaling)

Lecture 39 video

Episode 27: Input/Output Devices

Lecture slides

Lecture 40 video

Required reading after class: Chapter 36.1 – 36.7 (I/O Devices)

Episode 28: Virtual Machine Monitors

Lecture slides

Lecture 41 video

Required reading after class: Appendix B (Virtual Machine Monitors)

Episode 29: Security: An Introduction

Lecture slides

Lecture 42 video

Episode 30: Systems Security

Lecture slides

Lecture 43 video

Lecture 44 video