Unmodified Device Driver Reuse and Improved System Dependability via Virtual Machines

We propose a method to reuse unmodified device drivers and to improve system dependability using virtual machines. We run the unmodified device driver, with its original operating system, in a virtual machine. This approach enables extensive reuse of existing and unmodified drivers, independent of the OS or device vendor, significantly reducing the barrier to building new OS endeavors. By allowing distinct device drivers to reside in separate virtual machines, this technique isolates faults caused by defective or malicious drivers, thus improving a system's dependability. We show that our technique requires minimal support infrastructure and provides strong fault isolation. Our prototype's network performance is within 3-8% of a native Linux system. Each additional virtual machine increases the CPU utilization by about 0.12%. We have successfully reused a wide variety of unmodified Linux network, disk, and PCI device drivers.

[1]  Freeman L. Rawson,et al.  An Architecture for Device Drivers Executing as User-Level Tasks , 1993, USENIX MACH Symposium.

[2]  C. Thompson Special Interest Group , 1995 .

[3]  Dan Duchamp,et al.  Linux Device Driver Emulation in Mach , 1996, USENIX Annual Technical Conference.

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

[5]  LiedtkeJochen,et al.  Two years of experience with a -Kernel based OS , 1991 .

[6]  George Candea,et al.  Recursive restartability: turning the reboot sledgehammer into a scalpel , 2001, Proceedings Eighth Workshop on Hot Topics in Operating Systems.

[7]  Gernot Heiser,et al.  Towards Untrusted Device Drivers , 2003 .

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

[9]  Jay Lepreau,et al.  The Flux OSKit: a substrate for kernel and language research , 1997, SOSP.

[10]  Jochen Liedtke,et al.  The performance of μ-kernel-based systems , 1997, SOSP.

[11]  Joshua LeVasseur,et al.  Towards Scalable Multiprocessor Virtual Machines , 2004, Virtual Machine Research and Technology Symposium.

[12]  Scott Devine,et al.  Disco: running commodity operating systems on scalable multiprocessors , 1997, TOCS.

[13]  Gerald W. Neufeld,et al.  User Level IPC and Device Management in the Raven Kernel , 1993, USENIX Microkernels and Other Kernel Architectures Symposium.

[14]  Trent Jaeger,et al.  How to schedule unlimited memory pinning of untrusted processes or provisional ideas about service-neutrality , 1999, Proceedings of the Seventh Workshop on Hot Topics in Operating Systems.

[15]  Toni Cortes,et al.  Improving Application Performance Through Swap Compression , 1999, USENIX Annual Technical Conference, FREENIX Track.

[16]  Rudolf Ruland,et al.  Two years of experience with a μ-Kernel based OS , 1991, OPSR.

[17]  YangJunfeng,et al.  An empirical study of operating systems errors , 2001 .

[18]  Andrew Warfield,et al.  Reconstructing I/O , 2004 .

[19]  Jochen Liedtke,et al.  On micro-kernel construction , 1995, SOSP.

[20]  Noah Treuhaft,et al.  Recovery Oriented Computing (ROC): Motivation, Definition, Techniques, and Case Studies , 2002 .

[21]  J. Liedtke On -Kernel Construction , 1995 .

[22]  Kevin Elphinstone,et al.  Initial Evaluation of a User-Level Device Driver Framework , 2004, Asia-Pacific Computer Systems Architecture Conference.

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

[24]  Junfeng Yang,et al.  An empirical study of operating systems errors , 2001, SOSP.

[25]  Brian N. Bershad,et al.  An I/O System for Mach 3.0 , 1991, USENIX MACH Symposium.

[26]  J. Löser,et al.  An I / O Architecture for Microkernel-Based Operating Systems , 2003 .

[27]  Steven M. Hand,et al.  Self-paging in the Nemesis operating system , 1999, OSDI '99.

[28]  Robert P. Goldberg,et al.  Survey of virtual machine research , 1974, Computer.

[29]  Michael Stumm,et al.  Position Summary: Supporting Hot-Swappable Components for System Software , 2002 .

[30]  Trent Jaeger,et al.  The SawMill multiserver approach , 2000, EW 9.

[31]  Michael Stumm,et al.  Supporting hot-swappable components for system software , 2001, Proceedings Eighth Workshop on Hot Topics in Operating Systems.