|
VEXE'DD:
Virtual EXtension Environments for Device Drivers
As of summer 2004, VEXE'DD is no longer under active development.
Virtual EXtension Environments for Device Drivers (or VEXE'DD for
short) examines ways of using virtualization to provide reliability,
security, and robust backward compatibility for extensible systems.
The project uses the problem of supporting existing third-party
Windows WDM device driver binaries as its motivating problem.
Almost every software system allows for extensions in one form or
another. For example, web-browsers can be extended with plugins,
applets, and ActiveX controls, photo-editing applications can be
extended with new effects and filters, and operating systems can be
extended with new functional components as well as with device drivers
that support new hardware devices.
Unfortunately, in addition to adding functionality to software
systems, the use of extensions can greatly increase the risk of
instability in those systems, thereby reducing their usefulness. This
problem is particularly acute in situations such as device drivers in
operating systems, where any mistake in any driver may cause complete
loss of functionality of the whole system - typically as a result of
extensions either corrupting the internals of their container system
or preventing their container from making progress.
The idea behind VEXE'DD is to execute potentially troublesome
extensions in a virtual container that is separate and isolated from
the rest of the system. In the original container, a generic proxy
provides the desired functionality by using the virtual container as
an oracle for requests that would have involved the extension.
We worked with operating systems and device drivers as our
motivating example. For our virtual containers,
we created modified versions of
Microsoft's Virtual PC,
with each virtual container running a nearly complete copy of the
Windows operating system to host
Windows WDM device-driver
extensions.
Design and implementation challenges included
the WDM APIs,
hardware interrupts,
DMA,
interrupt service routines,
METHOD_NEITHER IOCtl's,
SMP support,
and reducing the resource consumption of virtual containers.
A practical, fully functional, working implementation of some of the same ideas can be found in the Xen hypervisor support for unmodified device drivers.
-
Úlfar Erlingsson, Tom Roeder, and
Ted Wobber. Virtual Environments for Unreliable Extensions. Technical
Report
MSR-TR-05-82,
Microsoft Research, June 2005.
[PDF]
-
Keir Fraser, Steven Hand, Rolf Neugebauer, Ian Pratt, Andrew Warfield, and Mark Williamson.
Safe Hardware Access with the Xen Virtual Machine Monitor.
Published at the OASIS ASPLOS 2004 workshop.
-
Joshua LeVassuer and Volkmar Uhlig and Jan Stoess and
Stefan Goetz. Unmodified Device Driver Reuse and Improved
System Dependability via Virtual Machines. In Proceedings
of the 6th Symposium on Operating Systems Design
and Implementation (OSDI 2004), December 2004.
-
Michael Swift, Brian N. Bershad, and Henry M. Levy.
Improving the Reliability of Commodity Operating Systems, in
Proceedings of the 19th ACM Symposium on Operating Systems Principles, Bolton Landing, NY, Oct. 2003.
-
Microsoft Corp. Windows Driver Foundation. WinHEC, 2004.
|