Virtualization Technologies
This is the home page for the "Virtualization Technologies" course.
Here, you will find (in a badly-organised form) all the
material, slides, and information needed to attend the course
For the previous edition of the course, check the old websites (2019, 2021, and 2023)
Lessons:
- First lesson: 2026/03/03, 9:00 -> 11:00, PC Room
- Second lesson: 2026/03/05, 9:00 -> 11:00, PC Room
- Third lesson: 2026/03/10, 9:00 -> 11:00, PC Room
- Simple example with trap'n'emulate on x86 (it does not work!)
- Hardware-assisted virtualization
- Page-table virtualization: shadow paging and two-level paging
- Fourth lesson: 2026/03/12, 9:00 -> 11:00, PC Room
- Simple example with hardware-assisted virtualization on arm64: using EL2
- Simple example with Intel VT-x: hosted approach (linux kernel module) vs bare-metal approach
- Fift lesson: 2026/03/17, 9:00 -> 11:00, PC Room
- Using KVM; example of I/O with KVM
- Something about user-space VMMs
- Something more on I/O virtualization
- Sixth lesson: 2026/03/19, 9:00 -> 11:00, PC Room
- Seventh lesson: 2026/03/24, 9:00 -> 11:00, PC Room
- Some experiments with Linux namespaces and similar
- Eight lesson: 2026/03/31, 9:00 -> 11:00, PC Room
- Nineth lesson: 2026/04/02, 9:00 -> 11:00, PC Room
- Tenth lesson: TBD, 9:00 -> 11:00, PC Room
Project Ideas:
Remember: before starting to work on a project, contact me for details.
- Write a simple and minimalistic hypervisor for x86_64 or ARM using a programming language at your choice (WARNING! The hypervisor does not need to be complete; it just needs to show that you understood the basic virtualization technologies).
You can use trap and emulate or hardware assisted virtualization, at your choice.
If you also attended the Safe System Programming course, you can write it in Rust: it will count for both the courses.
- Write a minimalistic VM based on KVM, using a programming language at your choice. Implement only few simple devices (invented by you or based on virtio).
If you also attended the Safe System Programming course, you can write it in Rust: it will count for both the courses.
- Implement some simple container runtime, as described in the course (and as better detailed
here --- this tutorial is based on python, but you should use C, C++ or similar).
If you also attended the Safe System Programming course, you can write it in Rust: it will count for both the courses.
- Perform some experiments with multi-processor real-time virtual machines. You can try to verify existing schedulability tests, or you can work on schedulability analysis, or you can try to implement global scheduling in the guest in a correct way
- Experimentally evaluate the real-time performance of (single-processor and multi-processor) virtual machines, considering both scheduling and latencies
- Write a simple Linux kernel modules that activates VT-x (or some form of hardware-assisted virtualization) and tries to run the host Linux kernel in non-root mode (something like vbh or similar). Enable EPT (or similar technologies) if possible.
Examples:
Links: