Course Info

Description

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.

Course Themes:

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.

Course Organization and Workload

The course consists of readings, discussion, and a semseter-long implemenation project.
Half of the credit for the course will be for the project (implemeting a VMM, or hypervisor), and half will be for
participation (reading the material in advance of class, and contributing to class discussions).
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).

Acknowledgements

Abhinand Palicherla and Jiahong Huang implemented most of the JOS VMM, as well as core JOS enhancements to facilitate
virtualization. Amit Arya ported JOS to amd64, and Tao Zhang contributed guest video
support. Of course, we are also indebted to the many contributors to the baseline JOS code.