Lecture Slides and Videos

Below find lecture slides and videos for 2017 and 2016 along with videos for previous years.

Geoffrey Challen has been taping his OS lectures since 2012, resulting in hundreds of hours of freely available online content. Browse the lectures below or subscribe to the lecture feed or YouTube channel.

2017


5/10/2017. Exam Review

Exam review ask me anything session.

5/8/2017. Hints for Computer System Design

Discussion of introduction to Hints for Computer System Design by Butler Lampson.

5/3/2017. Amdahl's Law

Continuation of a discussion of performance and benchmarking, and introduction to Amdahl's Law.

5/1/2017. Performance and Benchmarking

Discussion of the process of benchmarking and performance improvement.

4/28/2017. Container Virtualization

Discussion of container or operating-system virtualization.

4/26/2017. Xen and the Art of Virtualization

Discussion of the Xen approach to paravirtualization.

4/24/2017. Full Virtualization

Introduction to virtualization.

4/19/2017. RAID

Overview of Redundant Arrays of Inexpensive Disks (RAID).

4/17/2017. Log-Structured File Systems

Discussion of log-structured file systems.

4/14/2017. Journaling and FFS

The UNIX Fast File System (FFS).

4/12/2017. File System Caching and Consistency

Discussion of file system caching and its impacts on consistency.

4/10/2017. File System Data Structures

Continuation of a discussion of file system data structures.

4/7/2017. Introduction to File Systems

Introduction to file system data structures and challenges.

4/5/2017. Files

Introduction to files, file metadata and UNIX file system semantics.

4/3/2017. Disks

Introduction to disks and the basics of stable storage.

3/29/2017. Page Replacement

Discussion of page replacement policies.

3/27/2017. Swapping

A discussion of how to swap in and out pages.

3/15/2017. Paging

Page table design and implementation.

3/13/2017. Page Translation

Discussion of page translation.

3/10/2017. Address Translation

Discussion of efficiently translating virtual addresses to physical addresses.

3/8/2017. Virtual Addresses

Discussion of creating and translating virtual addresses.

3/6/2017. Introduction to Memory Management

Introduction to the challenge of OS energy management and the address space abstraction.

3/3/2017. A Scheduling Story

Introduction to MLFQ, Con Kolivas, Linux development, and the Rotating Staircase Deadline Scheduler.

3/1/2017. Simple Schedulers

An overview of simple schedulers including the know-nothings (random, round-robin) and oracle schedulers.

2/27/2017. Introduction to Scheduling

Completion of a discussion of thread states followed by a motivation of the what, when and how of thread scheduling.

2/24/2017. Threads and Thread Implementations

Introduction to the thread abstraction and discussion of different threading implementations.

2/22/2017. Context Switching

The how and why of context switching.

2/20/2017. Interrupt and Exception Handling

Introduction to the root of kernel privilege, interrupts and exception handling. Completion of wait and exit.

2/17/2017. Deadlock and exec

Discussion of deadlock and completion of the process interface including a discussion of exec.

2/15/2017. Synchronization Primitives

Spinlocks, locks, and condition variables.

2/13/2017. Introduction to Synchronization

Introduction to synchronization and critical sections.

2/10/2017. fork() and pipe()

Completion of a discussion of fork including the use of pipes.

2/8/2017. Processes and File Handles

Introduction to file handles and file descriptors and the process life cycle.

2/6/2017. More About Processes

Continuation of a discussion of the process abstraction.

2/3/2017. The Process Abstraction

Introduction to the process abstraction and standard UNIX utilities.

2/1/2017. ASST0 Setup

Getting starting with ASST0 and setting up the toolchain.

1/30/2017. Introduction to CSE 421/521

Introduction to an introduction to operating systems, the course staff, and course policies.

2016


5/6/2016. Exam Review

Exam review ask me anything session.

5/2/2016. Cells: A Virtual Mobile Smartphone Architecture

Discussion of Cells: A Virtual Mobile Smartphone Architecture by Jeremy Andrus et al.

4/29/2016. Scaling Linux to Many Cores

Discussion of "An Analysis of Linux Scalability to Many Cores" by Silas Boyd-Wickizer et al.

4/27/2016. Hints for Computer System Design

Continuation of a discussion of performance and benchmarking, followed by an introduction to Hints for Computer System Design by Butler Lampson.

4/25/2016. Performance and Benchmarking

Discussion of the process of benchmarking and performance improvement.

4/22/2016. Atlantis: Robust, Extensible Execution Environments for Web Applications

Discussion of the Atlantis paper by James Mickens and collaborators.

4/20/2016. Xen and the Art of Virtualization

Discussion of the Xen approach to paravirtualization.

4/18/2016. Full Virtualization

Introduction to virtualization.

4/15/2016. RAID

Overview of Redundant Arrays of Inexpensive Disks (RAID).

4/13/2016. Log-Structured File Systems

Discussion of log-structured file systems.

4/11/2016. Journaling and FFS

Introduction to journaling and the UNIX Fast File System (FFS).

4/8/2016. File System Caching and Consistency

Discussion of file system caching and its impacts on consistency.

4/6/2016. File System Data Structures

Continuation of a discussion of file system data structures.

4/4/2016. Introduction to File Systems

Introduction to file system data structures and challenges.

4/1/2016. Files

Introduction to files, file metadata and UNIX file system semantics.

3/30/2016. Disks

Introduction to disks and the basics of stable storage.

3/28/2016. Page Replacement

Discussion of page replacement policies.

3/25/2016. Swapping

A discussion of how to swap in and out pages.

3/21/2016. Paging

Page table design and implementation.

3/9/2016. Page Translation

Discussion of page translation.

3/7/2016. Address Translation

Discussion of efficiently translating virtual addresses to physical addresses.

3/4/2016. Virtual Addresses

Discussion of creating and translating virtual addresses.

3/2/2016. Introduction to Memory Management

Introduction to the challenge of OS energy management and the address space abstraction.

2/29/2016. A Scheduling Story

Introduction to MLFQ, Con Kolivas, Linux development, and the Rotating Staircase Deadline Scheduler.

2/26/2016. Simple Schedulers

An overview of simple schedulers including the know-nothings (random, round-robin) and oracle schedulers.

2/24/2016. Introduction to Scheduling

Completion of a discussion of thread states followed by a motivation of the what, when and how of thread scheduling.

2/22/2016. Threads and Thread Implementations

Introduction to the thread abstraction and discussion of different threading implementations.

2/19/2016. Context Switching

The how and why of context switching.

2/17/2016. Software Interrupts and Exceptions

Discussion of ways that applications can get the kernel's attention.

2/15/2016. Interrupt and Exception Handling

Introduction to the root of kernel privilege, interrupts and exception handling.

2/10/2016. exec, wait and exit

Completion of the process interface including a discussion of exec, wait, and exit.

2/8/2016. Synchronization Primitives and Problems

Continuation of an introduction to synchronization primitives and a discussion of several classic synchronization problems.

2/5/2016. Synchronization Primitives

Completion of a discussion of critical sections, and an overview of locks and condition variables.

2/3/2016. fork() and Synchronization

Completion of a discussion of fork including the use of pipes, and the beginning of a unit on synchronization.

2/1/2016. Processes and File Handles

Continuation of a discussion of the process abstraction and introduction to file handles and file descriptors.

1/30/2016. The Process Abstraction

Introduction to the process abstraction and standard UNIX utilities.

1/25/2016. Introduction to CSE 421/521

Introduction to an introduction to operating systems, the course staff, and course policies.


Created 9/18/2020
Updated 9/18/2020
Commit
Built 9/18/2020 @ 11:03 EDT