COMP 790, Spring 2017: Topics in Computer Science: Virtualization

Latest Announcements

1/14: Lab 1 posted; programming environment details TBA
12/23: Initial schedule and syllabus posted

See all announcements RSS 2.0 feed

Course Info


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.

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 domain).


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.

This course website was created using the Coursegen toolkit written by Dave Andersen and Nick Feamster. Thanks!

Last updated: 2017-01-14 20:50:24 -0500 [validate xhtml]