Virtualization is an increasingly ubiquitous feature of modern computer systems, and a rapidly evolving part of the system stack. Hardware vendors are adding new features to support more efficient virtualization, OS designs are adapting to perform better in VMs, and VMs are an essential component in cloud computing. Thus, understanding how VMs work is essential to a complete education in computer systems.
This course will cover how PC virtual machines (VMs) are implemented, as well as survey recent research into virtualization. The course will be organized as a mixture of paper reading and implementation. Students will implement their own hypervisor, and extend the hypervisor as an open-ended course project.
Topics to be covered include: memory management, paravirtualization, hardware virtualization, OS-level virtualization (containers), security, and advanced research topics.
Reading and Understanding Research: The course should teach you how to read research papers critically, and scientific/engineering issues generally.
System building experience: The course's programming assignments should expose you to virtual machine monitors (VMMs, or hypervisors) and their programming environment.
The course consists of readings, discussion, and a semseter-long implemenation project. Three quarters of the class meetings will be for paper discussions, the other quarter will be in-class time to work on the project and/or discuss low-level implementation details. In order to fully understand the reading material and have interesting class discussions, I recommend you read each paper more than a day in advance so that it has time to sink in.
This course does not require a textbook. The primary course material will be papers posted on this site (accessible only to computers on the unc.edu domain).
This course is inspired and modified by a virtualization course taught by Prof. Donald E. Porters
Last updated: 2017-01-14 20:50:24 -0500 [validate xhtml]