Publication | Closed Access
Constructing services with interposable virtual hardware
90
Citations
35
References
2004
Year
Unknown Venue
Virtual machine monitors have resurged as a solution to complex systems problems, yet existing VMMs lack sufficient extensibility, compelling developers to reverse engineer or reimplement features. This work introduces µDenali, an extensible, programmable VMM that runs modern operating systems and provides an application‑level API for building extensions. µDenali exposes a programmable virtual architecture that lets programmers add custom virtual hardware, intercept and modify events, and easily manipulate disk, network, and state for tasks such as migration.
Virtual machine monitors (VMMs) have enjoyed a resurgence in popularity, since VMMs can help to solve difficult systems problems like migration, fault tolerance, code sandboxing, intrusion detection, and debugging. Recently, several researchers have proposed novel applications of virtual machine technology, such as Internet Suspend/Resume [25, 31] and transparent OS-level rollback and replay [13]. Unfortunately, current VMMs do not export enough functionality to budding developers of such applications, forcing them either to reverse engineer pieces of a black-box VMM, or to reimplement significant portions of a VMM. In this paper, we present the design, implementation, and evaluation of µDenali, an extensible and programmable virtual machine monitor that has the ability to run modern operating systems. µDenali allows programmers to extend the virtual architecture exposed by the VMM to a virtual machine, in effect giving systems programmers the ability to dynamically assemble a virtual machine out of either default or custom-built virtual hardware elements. µDenali allows programmers to interpose on and modify events at the level of the virtual architecture, enabling them to easily perform tasks such as manipulating disk and network events, or capturing and migrating virtual machine state. In addition to describing and evaluating our extensible virtual machine monitor, we present an application-level API that simplifies writing extensions, and we discuss applications of virtual machines that we have built using this API.
| Year | Citations | |
|---|---|---|
Page 1
Page 1