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.and 2021)
Lessons:
- First lesson: 2024/03/14, 9:30 -> 11:30
- Second lesson: 2024/04/02, 9:30 -> 11:30
- Third lesson: 2024/04/04, 9:30 -> 11:30
- Intel VT-x (hosted and bare-metal hypervisor)
- Fourth lesson: 2024/04/11, 9:30 -> 11:30
- Fift lesson: 2024/04/18, 9:30 -> 11:30
- Sixth lesson: 2024/04/23, 9:30 -> 11:30
- Containers, again
- Some experiments with Linux namespaces and similar
- Seventh lesson: 2024/05/02, 9:30 -> 11:30
- Eight lesson: 2024/05/07, 9:30 -> 11:30
- Virtual Machine scheduling
- Nineth lesson: 2024/05/09, 9:30 -> 11:30
- Tenth lesson: 2024/05/27, 9:30 -> 11:30
- Something about unikernels
- VM boot times
- Comparison between OS virtualization, HW virtualization, and paravirtualization with unikernels
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: