CS 5460/6460 - Operating Systems
- Instructor: Anton Burtsev (anton.burtsev@utah.edu)
- Time and place: Tue/Thu, 9:10am - 10:30am, WEB L101
- Canvas: https://utah.instructure.com/courses/1022264
- Piazza (questions): https://piazza.com/utah/spring2025/cs5460001spring2025/home
- Gradescope (homework assignments and quizzes): https://www.gradescope.com/courses/947893
- Office hours:
- Anton: Thursdays 11:00am-12:00pm Anton’s office, MEB 3424
- Soham: Tuesdays 2.00pm-3.00pm MEB 3145
- Rutuja: Wednesdays 5.00pm-6.00pm MEB 3145
- Navya: Mondays 12.00pm-1.00pm MEB 3515
- Class repo (pull requests): github
- PollEverywhere link: PollEv.com/antonburtsev
- Previous years: 2024
Class Overview
cs5460/6460 teaches the fundamentals of operating systems. You will study, in detail, virtual memory, kernel and user mode, system calls, threads, context switches, interrupts, interprocess communication, coordination of concurrent activities, and the interface between software and hardware. Most importantly, you will study the interactions between these concepts, and how to manage the complexity introduced by the interactions.
To master the concepts, cs5460/6460 is organized in as a series of lectures, and homeworks. The lectures (and the book readings) familiarize you with the main concepts. The homrworks force you to understand the concepts at a deep level.
The lectures are based on xv6,
a modern re-implementation of one of the early UNIX operating systems,
specifically, Unix Version 6 which was developed in the 1970s, on the modern hardware.
xv6 is only 9,000 lines of C code, but it can run real processes, and perform many
functions of a traditional operating system, e.g., Windows, Linux, and Mac OS.
Due to its small size, it is possible to read the source code and understand the entire
operating system. Moreover, xv6 is accompanied by a book
describing its architecture and a printout of its source code.
Homework assignments will help you to deepen the
understanding of the principles and internal organization of a simple, but real
operating system.
You may wonder why we are studying an operating system that resembles Unix v6 instead of the latest and greatest version of Linux, Windows, or BSD Unix. xv6 is big enough to illustrate the basic design and implementation ideas in operating systems. On the other hand, xv6 is far smaller than any modern production operating systems, and correspondingly easier to understand. xv6 has a structure similar to many modern operating systems; once you’ve explored xv6 you will find that much is familiar inside kernels such as Linux.
Grading policy
Homework: 40%, in-class activities: 10%, quizzes 15%, midterm exam: 15%, final exam: 20% of your grade (all grades curved).
Late homework policy
You can submit late homework assignments (not quizzes or in-class activities) 3 days after the deadline for 60% of your grade.
Schedule
Jan 7
- Lecture 0 - Logistics (video)
- Lecture 1 - Introduction (video)
- Reading: OSTEP: 2 Introduction
- Reading (optional, to help you with C): The C Programming Language (look at Chapter 5 Pointers and Arrays) by Brian Kernighan and Dennis Ritchie (first edition is freely available, second edition is in print and is available from all major bookstores)
Jan 9
- Lecture 02 - OS Interfaces (part 1) (video)
- Reading: xv6: Chapter 0: Operating system interfaces
- Video (optional): AT&T Archives: The UNIX Operating System
Jan 14
Jan 16
- Lecture 02 - OS Interfaces (part 3)
- Lecture 03 - x86 Assembly (video)
- Reading: Reading: xv6 Book: Appendix A: PC Hardware
- Reading: Reading: x86 Assembly Guide
Jan 21
- Lecture 03 - x86 Assembly (part 2) (video)
- Lecture 04 - Calling Conventions (video)
- Reading: PC Assembly Language. Paul A. Carter: Section 4 Subprograms (4.1 - 4.5)
- Reading: Wikipedia: x86 calling conventions
- Homework 1 - Shell
Jan 23
- Lecture 04 - Calling Conventions (video)
- Source code examples: github
Jan 28
- Lecture 05 - Linking and Loading (video
- Reading: Operating Systems from 0 to 1. Chapter 5. The Anatomy of a Program
- Optional reading: This lecture is mostly based on the material of this book: Linkers and Loaders by John R. Levine
Jan 30
Feb 4
- Lecture 06 - Segmentation and Paging (video)
- Reading: Intel 64 and IA-32 architectures software developer’s manual volume 3A: System programming guide, part 1 (Chapter 3: 3.1-3.4.5 and Chapter 4: 4.2-4.3)
Feb 6
- Lecture 06 - Segmentation and Paging (part 2) (video)
- Reading: OSTEP: Chapter 18 Paging: introduction: only Sections 18.1 - 18.3
- Reading: OSTEP: Chapter 20: only Section 20.3 Multi-level Page Tables
- Reading: Intel 64 and IA-32 architectures software developer’s manual volume 3A: System programming guide, part 1 (Chapter 3: 3.1-3.4.5 and Chapter 4: 4.2-4.3)
- Homework 2 - ELF
Feb 11
Feb 13
- Lecture 07 - System Boot (video)
- Reading: Appendix B: The boot loader and Chapter 1: Code: the first address space.
- Reading (optional): How Does an Intel Processor Boot?
- Reading (optional): Intel SGX explained (sections 2.9.1 The Motherboard, 2.9.2 The Intel Management Engine (ME), and 2.13 Platform Initialization (Booting))
Feb 18
Feb 20 -Lecture 08 - System Init (video)
- Reading: Chapter 1: Operating system organization
- Reading: Chapter 2: Page tables
Feb 25
Feb 27
March 4
- Midterm review (video
- Reading: Exams from previous years
March 6
- Midterm exam (regular time and place)
- Exam rules: no AI tools, no internet search, no communication or help, everything else is allowed, your laptop (in fact the exam is on Gradescope so you need a device), you can compile and run code, use IDEs, debuggers, program whatever you want, all documents reachable from the class web site are allowed (i.e., books, intel manual, etc. and you can search them).
March 11
- No class (Spring Break)
March 13
- No class (Spring Break)
March 18
- Lecture 09 - Interrupts and Exceptions (part 2) (video)
- Reading: Chapter 3: Traps, interrupts and drivers
March 20
- Lecture 09 - Interrupts and Exceptions (part 3) (video)
- Reading: Chapter 3: Traps, interrupts and drivers
March 25
March 27
March 30
April 1
- Lecture 11 - Context Switch (video)
- Reading: Chapter 1. Subsection: Running the first process, Chapter 5 - Scheduling (up until Drivers)
April 3
- Lecture 11 - Context Switch (part 2) (video)
- Reading: Chapter 1. Subsection: Running the first process, Chapter 5 - Scheduling (up until Drivers)
April 8
- Lecture 12 - File Systems (video)
- Reading: xv6: Chapter 6: File System
- Reading: OSTEP: Chapter 40: File System Implementation
April 10
- Lecture 12 - File Systems (part 2) (video)
- Reading: xv6: Chapter 6: File System
- Reading: OSTEP: Chapter 40: File System Implementation
April 15
April 17
- Lecture 13 - Synchronization (part 2) (video)
- Reading: xv6: Chapter 4: Locking and synchronization
- Homework 5 (extra credit) - Infinite files for xv6
April 22
- Final review (video
- Reading: Exams from previous years
April 29
- Final exam 8:00am - 10:00am (same room) official schedule
- Exam and solutions
- Reading: Exams from previous years