Basic Information
- Lectures: TR 3:30-4:45pm, Derring Hall 3092
- Instructor: Huaicheng Li, huaicheng@vt.edu
- Office hours: Fridays 1-2pm, GP 4109
- TA: Jacqueline Bruen, jacquelineb@vt.edu
- Office hours: Tuesdays 10-11am, GP 1st floor lobby by the stairs
- Online forum: Ed Discussion
- Please turn on the notifications to avoid missing important course updates!
Lecture attendance is mandatory. Each student is allowed to miss three lectures over the course of the semester; students missing more than three lectures will not receive participation credit (15%) unless there is a compelling reason for the absences.
Please ask questions.
Three types of lectures
- Lectures by the instructor, covering topics:
- OS designs and principles
- Storage: SSDs/HDDs, block layer, file systems
- Memory: virtual memory, TLB, address translation, paging, protection, sharing
- CPU: scheduling, process/threads, concurrency
- Cloud infrastructure: virtualization, offloading, acceleration, disaggregation, new hardware/OS architecture.
- Research paper discussion, presented by YOU
- reading group: 4 members / group
- Guest lectures: academic and industry talks
- Recent research
- Recent technology trends in industry
Gradings (tentative)
- Participation: 15%
- Class attendance is mandatory!
- Paper reviews + presentations: 15%, 5-10 papers
- Course project (open-ended): 50%
- Proposal: 5%
- Midterm report: 10%
- Final presentation: 10% (demo video)
- Final report: 25%
- Labs: 20% (semi open-ended, tentative, details TBA)
- CloudLab setup + kernel compilation + measuring latency numbers
- Reading, understanding and hacking Linux kernel source code (nvme, fs, net, etc.)
- FEMU FTL: Mapping, Garbage Collection (GC), Wear Leveling (WL)
- Linux page table walker (kernel module)
- Bonus: FEMU enhancement, other new features! (Up to 10%)
Reading Materials
No required textbooks for the class. The lectures are defined by the instructor to focus on topics which are not fully covered by one specific textbook. However, there are many great resources (books, online resources, etc.) I recommend if you would like to go deeper in understanding and hacking OS.
Textbooks
-
OSTEP, Operating Systems: Three Easy Pieces, by Remzi Arpaci-Dusseau and Andrea Arpaci-Dusseau, free OS textbook!
-
OS:PP, Operating Systems: Principles and Practice (2nd edtion), by Tom Anderson and Michael Dahlin
-
Linux Kernel Development (3rd edition), By Robert Love
Linux Kernel Programming
There are tons of online materials talking about Linux kernel programming, see below for some examples:
- The Linux Kernel Source Code
- Why not?
- The Linux Kernel Documentation
- The Linux Kernel Module Programming Guide
- Free guide/book
- Linux Kernel Programming, by Kaiwan N Billimoria
- VT students can access this book online for free, check instructions here
Research Papers
File Systems
- GFS, The Google File System, by Sanjay Ghemawat, Howard Gobioff, Shun-Tak Leung
- LFS, Design and Implementation of the Log-structured File System, by Mendel Rosenblum, John Ousterhout
- BtrFS, BTRFS: The Linux B-Tree Filesystem, by Ohad Rodeh, Josef Bacik, Chris Mason
- FFS, A Fast File System for UNIX, by Marshall K. McKusick, William N. Joy, Sam J. Leffler, Robert S. Fabry
- WAFL, File System Design for an NFS File Server Appliance, by Dave Hitz, James Lau, Michael Malcolm
Memory Management
- SDF, Software-Defined Far Memory in Warehouse-Scale Computers, by Google researchers
- TMO, TMO: transparent memory offloading in datacenters, by Meta researchers
Scheduling
- Syrup, Syrup: User-Defined Scheduling Across the Stack
-
Shenango, Shenango: Achieving High CPU Efficiency for Latency-sensitive Datacenter Workloads
- (Optional) gHost, ghOSt: Fast & Flexible User-Space Delegation of Linux Scheduling
- (Optional) Caladan, Caladan: Mitigating Interference at Microsecond Timescales
Systems Programming
Systems programming skills are necessary for this course. If you would like to sharpen your C/C++ systems programming skills in the UNIX/Linux environment, the following books are worth reading:
Writing OSes
Interested in building an OS? See the exciting projects below: