COMP 790: Labs

Assignments

Is any kind of collaboration permitted on the labs?

You may work in teams of two or alone. You may not change partners after the first lab without explicit permission of the instructor. Do not discuss code with anyone other than your partner and the course staff. The collaboration policy elaborates.

Between Labs 3 and 4, we will give you a substantial amount of base code to accelerate you through the rest of the JOS exercises. We want you to do the intial JOS labs to understand how this code is implemented in a baseline operating system, to facilitate modifying the code to work as a hypervisor.

Overview

A crucial component of the course is the labs. You will implement (the interesting pieces of) a real virtual machine monitor that will boot and run on a PC. We will do this by adding a hosted (Type 2) VMM, similar in some ways to VMware workstation or KVM, to the JOS operating system. JOS was developed at MIT and has been used in courses at several other schools.

JOS is simpler than Linux and Windows, but it includes most key operating systems abstractions, including a bootloader, memory protection, memory relocation, multiprogramming, a rudimentary file system, and a command shell.

JOS can be thought of as an exokernel, where the kernel implements a minimal set of core functionality that safely exports hardware resources to applications. These low-level kernel interfaces may be inconvenient for user processes to use directly, so user processes will make use of a "library operating system" (libos) to abstract these low-level exported resources into more convenient programming abstractions.

Compared to a traditional kernel design, an exokernel is fairly well suited to hosting a hypervisor, as the system call API is fairly close to the hardware, and there is already a fairly robust IPC mechanism.

Each lab in the series enhances the functionality of your operating system. Each lab builds on the previous one, so it is important that you design, build, and test carefully at each step. Carelessness in early labs will be costly down the road. There are not a lot of lines of code to write on this project; take the time to understand each phase before moving to the next one.


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