Logistics
The slides for this chapter are available here.
Website
All the lecture materials including slides and lecture notes, as well as the lab exercise, are available online: https://olivierpierre.github.io.
Outline
This unit is divided into chapters covering the following topics:
- Introduction to Virtualisation (~1h)
- Operating Systems Basics (~1h)
- The Theory of Virtualisation (~1h)
- Hardware Support for Virtualisation: CPU and Memory (~1h)
- I/O Virtualisation (~1h)
- Lightweight Virtualisation: Containers & Unikernels (~1h)
- Lab Exercise: Virtualising a Simple I/O Device (~2h)
Lab Exercise
We will conclude the day with a lab exercise in which we will virtualise a simple I/O device: a random number generator. Given the device specs, the goal of the exercise will be to implement its behaviour in software in the Qemu virtual machine monitor. That will involve building a driver in the guest (Linux) kernel, and running a VM with an application accessing the device through the driver. You will be given 2 weeks to complete that exercise, with a deadline set for 20/01/2026 (January 20, 2026). The exercise will be marked out of 20.
To complete the lab exercise you will be given remote (SSH) access to a Debian-based development environment. You can also use your personal machine if you have the proper software environment and hardware resources: a Debian or a Debian derivative (e.g. Ubuntu, Mint, etc.) with KVM support and 20 GB of storage free. It can be either natively installed on your personal machine, or running in a VM (e.g. VirtualBox, an image will be provided).
You can find more information about the exercise and its logistic on the corresponding part accessible from the left menu.
Reading List
The course unit is self-contained and in absolute you do not need to read any additional book to complete it. Still, a highly recommended book is:
Hardware and Software Support for Virtualization by Edouard Bugnion, Jason Nieh and Dan Tsafrir, Morgan & Claypool, 2017
This course unit is partially based on this book, which will be referred to as the textbook here.
A few other interesting books:
- The Definitive Guide to the Xen Hypervisor. David Chisnall, Pearson Education, 2008
- Modern Operating Systems, Andrew Tannenbaum and Herbert Bos, Prentice Hall Press, 2014
- Principles of Computer System Design: an Introduction, Jerome Saltzer and Frans Kaashoek, Morgan Kaufmann, 2009
- Linux Kernel Development, Robert Love, Addison-Wesley Professional, 2010