Virtual Environments for Unreliable Extensions

We describe how virtualization techniques can be used to address the problems of reliability, security, and backward compatibility in extensible systems. We specify the conditions under which this approach can be applied and present an architecture for its implementation: VEXE, or Virtual EXtension Environments. Further, we detail our experience with implementing VEXE’DD, a system for increasing the reliability of Windows device drivers based on this architecture. This study extends, and puts into context, recent work on reliable extensibility mechanisms.

[1]  James E. Smith,et al.  The architecture of virtual machines , 2005, Computer.

[2]  Beng-Hong Lim,et al.  Virtualizing I/O Devices on VMware Workstation's Hosted Virtual Machine Monitor , 2001, USENIX Annual Technical Conference, General Track.

[3]  James R. Larus,et al.  Singularity Design Motivation , 2004 .

[4]  Ajoy Kumar Ray,et al.  Intel microprocessors : architecture, programming and interfacing , 2001 .

[5]  Keir Fraser,et al.  Language support for lightweight transactions , 2003, SIGP.

[6]  David B. Lomet,et al.  Process structuring, synchronization, and recovery using atomic actions , 1977, Language Design for Reliable Software.

[7]  Robert Wahbe,et al.  Efficient software-based fault isolation , 1994, SOSP '93.

[8]  Brian N. Bershad,et al.  Extensibility safety and performance in the SPIN operating system , 1995, SOSP.

[9]  Margo I. Seltzer,et al.  Dealing with disaster: surviving misbehaved kernel extensions , 1996, OSDI '96.

[10]  Fred B. Schneider,et al.  Hypervisor-based fault tolerance , 1996, TOCS.

[11]  Rob Day,et al.  Adobe Photoshopデザイナーズ・バイブル , 1996 .

[12]  Brian N. Bershad,et al.  Recovering device drivers , 2004, TOCS.

[13]  Walter Oney,et al.  Programming the Microsoft Windows Driver Model , 1999 .

[14]  Brian N. Bershad,et al.  Improving the reliability of commodity operating systems , 2005, TOCS.

[15]  Amitabh Srivastava,et al.  Vulcan Binary transformation in a distributed environment , 2001 .

[16]  Stefan Götz,et al.  Unmodified Device Driver Reuse and Improved System Dependability via Virtual Machines , 2004, OSDI.

[17]  Jack B. Dennis,et al.  Virtual memory, processes, and sharing in Multics , 1967, CACM.

[18]  Andrew Birrell,et al.  Implementing remote procedure calls , 1984, TOCS.

[19]  Mark Russinovich,et al.  Inside Microsoft Windows 2000 , 2000 .

[20]  David Frascone Debugging kernel modules with user-mode Linux , 2002 .

[21]  Carl A. Waldspurger,et al.  Memory resource management in VMware ESX server , 2002, OSDI '02.

[22]  Andrew Warfield,et al.  Safe Hardware Access with the Xen Virtual Machine Monitor , 2007 .