CSCI 432
Operating Systems
Lectures | OSCO | Labs | Resources
Home
Instructor: | Duane A. Bailey (email: bailey; office: TPL 306) |
Course Calendar: | https://tinyurl.com/cs432-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: https://tinyurl.com/dab-office) |
Web Resources: | https://www.cs.williams.edu/~cs432 (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.
Syllabus
Course Syllabus (Revised)
Department Honor Code and Computer Usage Policy
Lectures
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://22xyz@lohani.cs.williams.edu/~cs432/shared/examples.git
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 |
Laboratories
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 |
Resources
Description | Lectures | OSCO | Labs