The website is being updated often, please check back frequently for the latest information.
Basic Information
- Syllabus: pdf
- Lectures: TR 3:30-4:45pm, Pamplin Hall 31
- Instructor: Huaicheng Li, huaicheng@vt.edu
- Office hours: 10-11am on Fridays, Gilbert Place 4109
- TAs:
- Hanchen Xu, hanry@vt.edu (Office hours: Wed 2:30-3:30pm, Gilbert Place 4211)
- Hansen Idden, hansenidden@vt.edu (Office hours: Mon 2:30-3:30pm, Gilbert Place 4211)
- Online forum: Ed Discussion
- Please turn on the notifications to avoid missing important 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 (5%) unless there is a compelling reason for the absences.
Please ask questions during the lectures to make the class more interactive!
Acknowledgement: LKP at VT was designed by Dr. Changwoo Min. We will customize and adapt the course materials based on Dr. Min’s version, including lectures, exercises, and projects.
Lectures
The Lectures will cover
- Various components in the Linux kernel, including
- Syscall
- Kernel data structures and debugging
- Process management and scheduling (scheduler, ebpf, etc)
- Interrupt handling
- Kernel synchronization
- Timer management
- Memory management (address space, in-kernel memory allocation, page table and fault management, heterogeneous memory management)
- File system and block layer (VFS, page cache, NVMe storage)
- Networking stack (TCP, RDMA, TBD)
Recent/classic OS research papers
- Guest lectures (TBD)
- industry trends, emerging technologies
Grading
| Component | Weight |
|---|---|
| In-Class Quizzes (8 × 3%) | 24% |
| Final Exam | 20% |
| Projects (P1 6% + P2 8% + P3 10% + P4 12%) | 36% |
| Exercises (5 × 2%) | 10% |
| Paper Reading (5 × 1%) | 5% |
| Participation | 5% |
In-Person Assessment: 44% (Quizzes + Final Exam) - verifies understanding
Component Details
- In-Class Quizzes (24%): Bi-weekly knowledge checks on recent lectures
- Closed-book, in-class, ~15 minutes each
- Tests conceptual understanding, not implementation details
- Final Exam (20%): Comprehensive closed-book exam
- Projects (36%): Major kernel programming projects (individual)
- P1 (6%): Syscall
- P2 (8%): Profiling
- P3 (10%): Memory Management
- P4 (12%): File System (TBD)
- Exercises (10%): Individual kernel programming exercises (Ex0-Ex4)
- Topics are tentative and may be adjusted
- Additional exercises may be offered as bonus
- Paper Reading (5%): Recent OS research paper discussions
- Participation (5%): Lecture attendance and engagement
- Bonus (up to 5%): Bonus exercises, great questions, helping others on Ed
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 Linux/OS.
Textbooks
Linux specific:
(highly recomended) Linux Kernel Development (3rd edition), By Robert Love
(optional) Professional Linux Kernel Architecture, by Wolfgang Mauerer
(optional) Understanding the Linux Kernel, by Daniel P. Bovet, Marco Cesat
(optional) Linux Device Drivers, 3rd Edition, by Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman
(optional) Linux Kernel Programming: A Comprehensive and Practical Guide to Kernel Internals, Writing modules, and Kernel Synchronization, Second Edition, by Kaiwan N. Billimoria
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 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: