Course calendar

Lecture recordings will be available on Canvas a couple of days after the class.

Watch the videos before the class for which they are assigned. We will have quizzes on them during the class. Assigned reading can be usually done after the class, unless otherwise indicated.

All videos for the course have been produced by Margo Seltzer
Date Videos to watch and lecture slides Reading assignments Programming assignments
9/5 Technology trends, or why operating systems are NOT a solved problem

Course Structure
Chapter 2 in the OSTEP book.
Chapter 0, 3 in the xv6 book.
9/10 Introduction

Bootstrapping. What does it mean to be the kernel?

How does an OS boot?

Read before class:
Overview of virtual memory and address translation.
Chapter 1 in the xv6 book.

Short section on booting in The Little Book About OS Development.

Optional:
MIPS R3000 programmer manual may be helpful in understanding how the OS must interact with the hardware during boot and after.
9/12 Continue the bootstrapping exercise. Review the readings from previous class.
9/17 Synchronization

Watch before class:
Overview of synchronization
Synchronization types

All videos are produced by Margo Seltzer
[OSTEP] Concurrency: An Introduction
Assignment 1 due on Monday, September 16 at 11:59pm PT.
9/19 Semaphore implementation exercise

Watch before class:
Synchronization implementation
All videos are produced by Margo Seltzer
The volatile keyword explained
Condition variables
Mesa semantics
9/24 Synchronization patterns

[OSTEP] Concurrent data structures

[OSTEP] Condition variables and bounded buffer problem
Mesa semantics

Treacherous shared counters

You don't know jack about shared variables or memory models -- Data races are evil.

Pointer tutorials:
The Wikipedia Tutorial
The Dave Marshall Tutorial
Assignment 2 due on Monday, 9/26 at 11:59pm PT.
9/26 Test-and-set locks in-depth
The Art of Multiprocessor Programming, Chapter 9. (sections 9.2-9.5.1 cover the material we studied in class) -- authenticate with your ECE account credentials.
10/1 TBD
10/3 Scheduling

Watch before class:
Computer Architecture Primer
[OSTEP] Scheduling
10/8 Advanced scheduling
A Decade of Wasted Cores
[OSTEP] Lottery scheduling
A Decade of Wasted Cores
Assignment 3 due on Monday, 10/7 at 11:59pm PT.
10/10 Implementing system calls

Watch before class:

Context switching
Processes and threads
Process components

Read before class:

OS161 man pages for the system calls you are implementing in A4.
File descriptors in Unix
Chapter 2 in the xv6 book
10/15 Processes and threads
Processes and file descriptors


Watch before class:

Process management
Fork and exec
10/17 Process creation: fork() and shared file objects
fork.c, pipes.c, pipes2.c, pipes-exec.c
Processes: exec(), exec.c,

Processes: waitpid/exit

Watch before class:

Process management
Fork and exec
[OSTEP] Introduction of the Unix process API (fork/exec, etc.)
10/22 Process creation: fork() and shared file objects
fork.c, pipes.c, pipes2.c, pipes-exec.c
Processes: exec(), exec.c,

Processes: waitpid/exit

Watch before class:

Process management
Fork and exec

OS161 man pages for the system calls in A5.
Assignment 4 due on Monday, 10/21 at 11:59pm PT.
10/24 Guest Lecture. TBD.
10/29 Virtual memory (Intro)
Paging
Watch before class:

Intro to Virtual Memory
Translation Lookaside Buffer (TLB)
Virtual memory on x86
Intro to paging
[OSTEP] Address spaces
[OSTEP] Memory API
[OSTEP] Address translation
10/31 Virtual memory (Intro)
Paging
Watch before class:

Intro to Virtual Memory
Translation Lookaside Buffer (TLB)
Virtual memory on x86
Intro to paging
[OSTEP] Address spaces
[OSTEP] Memory API
[OSTEP] Address translation
11/05 Paging to disk

Watch before class:

Continuation of paging by Margo Seltzer
[OSTEP] Translation lookaside buffers
[OSTEP] Free space management
MIPS MMU and TLB
[OSTEP] Introduction to Paging
[OSTEP] Advanced paging
11/07 Paging to disk

Watch before class:

Continuation of paging by Margo Seltzer
[OSTEP] Translation lookaside buffers
[OSTEP] Free space management
MIPS MMU and TLB
[OSTEP] Introduction to Paging
[OSTEP] Advanced paging
11/12 University break. Assignment 5 due Monday, 11/11 at 11:59pm PT.
11/14 File systems

Watch before class:

Disks
Introduction to file systems
File system naming
FFS
File system recovery
Journaling file systems
LFS

[OSTEP] Hard disk drives
[OSTEP] Flash-based SSDs
[OSTEP] File system implementation
[OSTEP] Locality and the FFS
[OSTEP] Crash consistency: fsck and journaling
[OSTEP]: Log-structured File Systems

ctFS: watch the video and skim the paper:
ctFS paper at FAST'22 conference

11/19 File systems

Watch before class:

Disks
Introduction to file systems
File system naming
FFS
File system recovery
Journaling file systems
LFS

[OSTEP] Hard disk drives
[OSTEP] Flash-based SSDs
[OSTEP] File system implementation
[OSTEP] Locality and the FFS
[OSTEP] Crash consistency: fsck and journaling
[OSTEP]: Log-structured File Systems

ctFS: watch the video and skim the paper:
ctFS paper at FAST'22 conference

11/21 Finish file systems
11/26 TBD
11/28 TBD
12/03 Special Lecture: The Devastation of Meltdown
12/05 Guest Lecture: On Flash Translation Layer. Surbhi Palande, PhD student at UBC, formerly Microsoft Research.

Assignment 6 due Friday, 12/06 at 11:59pm PT.