Live Update for Device Drivers

As commodity operating systems become more reliable and fault-tolerant, the availability of a system will be determined not by when it crashes, but instead by when it must be shutdown and rebooted due to software maintenance [12, 21]. While many system components can be upgraded on-line, critical low-level components, such as device drivers and other kernel extensions, cannot be updated without rebooting the entire operating sys-

[1]  Sriram K. Rajamani,et al.  The SLAM project: debugging system software via static analysis , 2002, POPL '02.

[2]  Dawson R. Engler,et al.  Checking system rules using system-specific, programmer-written compiler extensions , 2000, OSDI.

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

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

[5]  Steffen Hauptmann,et al.  On-line maintenance with on-the-fly software replacement , 1996, Proceedings of International Conference on Configurable Distributed Systems.

[6]  George Candea,et al.  Microreboot - A Technique for Cheap Recovery , 2004, OSDI.

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

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

[9]  George Candea,et al.  Reducing recovery time in a small recursively restartable system , 2002, Proceedings International Conference on Dependable Systems and Networks.

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

[11]  Lui Sha,et al.  Designing for evolvability: building blocks for evolvable real-time systems , 1996, Proceedings Real-Time Technology and Applications.

[12]  Ophir Frieder,et al.  On-the-fly program modification: systems for dynamic updating , 1993, IEEE Software.

[13]  Robert S. Fabry,et al.  How to design a system in which modules can be changed on the fly , 1976, ICSE '76.

[14]  Deepak Gupta,et al.  On‐line software version change using state transfer between processes , 1993, Softw. Pract. Exp..

[15]  Jim Gray,et al.  Why Do Computers Stop and What Can Be Done About It? , 1986, Symposium on Reliability in Distributed Software and Database Systems.

[16]  Klaus-Peter Löhr,et al.  Dynamic Restructuring in an Experimental Operating System , 1978, IEEE Transactions on Software Engineering.

[17]  Dominic Duggan,et al.  Type-based hot swapping of running modules , 2005, Acta Informatica.

[18]  Scott Nettles,et al.  Dynamic software updating , 2001, PLDI '01.

[19]  Insup Lee,et al.  DYMOS: a dynamic modification system , 1983 .

[20]  Robert Gray,et al.  Dynamic C++ Classes - A Lightweight Mechanism to Update Code in a Running Program , 1998, USENIX Annual Technical Conference.

[21]  Alessandro Orso,et al.  A technique for dynamic updating of Java software , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[22]  Dilma Da Silva,et al.  System Support for Online Reconfiguration , 2003, USENIX Annual Technical Conference, General Track.