CSCI 432

Operating Systems

Lectures | OSCO | Labs | Resources


Instructor: Duane A. Bailey (email: bailey; office: TPL 306)
Course Calendar:
Texts:xv6: a simple, Unix-like teaching operating system, by Cox, Kaashoek, and Morris.
RISC-V: An Overview of the Instruction Set Architecture, by Harry H. Porter, III
Optional: The C Programming Language, by Kernighan and Ritchie
Lecture: MW 8:30-9:45am, Wachenheim 114
Labs:M 1:10-2:25 or 2:35-3:50
Small Groups:Wednesdays 11-noon, 1:10-2:10, 2:35-3:35
Thursdays 10:00-11:00am, 1:10-2:10, 2:35-3:35
Office Hours: T1-3pm and F9-10:30am, or by appointment (TPL306 or, by demand, office Zoom:
Web Resources: (this page!)

Course Description

This course explores the design and implementation of computer operating systems. An operating system (O/S) is simply a (collection of) programs that manage the real or imagined resources available for use in a computer. Since our understanding of what a computer is changes constantly (your thermostat? your car? your house?) it is not surprising that our view of what constitutes an operating system evolves as well. Nonetheless, there are basic aspects of operating system design that have evolved over, say, the last six decades that are worth studying: kernel design, process scheduling, concurrency and synchronization, virtualization, memory management, I/O and file system integration, system security, and support for distributed computation. In this course, we will primarily investigate classic and modern approaches to design of unix-style operating systems.


Course Syllabus (Revised)
Department Honor Code and Computer Usage Policy


Description | OSCO | Labs | Resources

Lecture Date Notes
February 4 Just play. We wrote gcd.c and a shell program.
February 7 Pointer play and idioms. Clone examples from: ssh://
where 22xyz is your CS username.
February 9 O/S Structure.Lecture slides.
February 14 System Calls. Lecture slides.
February 16 The Monolithic xv6 Kernel & RISC-V ISA. Lecture slides.
February 21 Booting, System Calls, Virtual Memory (no lecture slides)
February 23 Memory Management. Lecture slides.
February 28 Traps: Syscalls, Exceptions & Interrupts. Lecture slides.
March 2 The Page Table: Our Faulty Friend. Lecture slides.
March 7 Interrupt Handling & Device Drivers. Lecture slides.
March 16 Introduction to Locks. Lecture slides.
April 4 Critical Section Protection. Lecture slides.
OSCO Topic Contract.
April 6 xv6 Locks. Lecture slides.
April 11 Scheduling. Lecture slides.
April 13 Scheduling Intricacies. Lecture slides.
April 18 Unix File System Structure. Lecture slides.
April 20 xv6 F/S: Low level I/O and Buffer Cache. Lecture slides.
Dump of a small filesystem
April 24 xv6 F/S Logging and Locking. Lecture slides.

OSCO Talks

Description | Lectures | Labs | Resources

Speaker Topic
Whit MirageOS
Diego The NUMA Problem
Dylan Tiny O/S
Nick & Rachel Elasic Cuckoo Page Tables
Clara Multi-threaded Web Crawlers
Garett VMs vs. Containers
Owen Kindle, Licenses, and Jailbreaking
Alex Google Fuchsia OS
Enoch Android OS
Aidan VMWare ESX Server
Derek Address Space Layout Randomization
Petros Kernel Modules and Updates
Atlas File Systems as Processes
Sophie System Power States
Mel Fire OS
Roxanne How to Turn on Your Computer
Emily Arduino
Ye Dirty COW
Paul The X Window System
De la Docker
Tai Distributed Systems and Scheduling
Jihong Temple O/S
Emma Docker


Description | Lectures | OSCO | Resources

Release Date Materials
February 4 Lab 0: A Simple C Program
February 7 Lab 1: A Compute Intensive Program
February 14 Lab 2: Getting to Know xv6
February 21 Lab 3: System Calls
February 28 Lab 4: Page Table Management (revised)
March 7 Lab 5: Copy-on-Write Memory Optimization
April 11 Lab 6: Context and Context-Switching
April 25 Lab 7: Supporting Large Files


Description | Lectures | OSCO | Labs

OSCO Topic Contract
Installing RISC-V Tools for xv6
RISC-V Instruction Card (the "Green card")
RISC-V ISA: Volume 1, Unprivileged Specification v. 20191213
RISC-V ISA: Volume 2, Privileged Specification v. 20191203
Duane's Incredibly Brief Intro to Unix and Emacs
Duane's Incredibly Brief Intro to C