Providing Dynamic Update in an Operating System

Dynamic update is a mechanism that allows software updates and patches to be applied to a running system without loss of service or down-time. Operating systems would benefit from dynamic update, but place unique demands on any implementation of such features. These demands stem from the event-driven nature of operating systems, from their restricted run-time execution environment, and from their role in simultaneously servicing multiple clients. We have implemented a dynamic update mechanism in the K42 research operating system, and tested it using previous modifications of the system by kernel developers. Our system supports updates changing both kernel code and data structures. In this paper we identify requirements needed to provide a dynamically updatable operating system, describe our implementation, and present our experiences in designing and using the dynamic update mechanism. We also discuss its applicability to other operating systems.

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

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

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

[4]  Steve R. Kleiman,et al.  Vnodes: An Architecture for Multiple File System Types in Sun UNIX , 1986, USENIX Summer.

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

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

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

[8]  Deepak Gupta,et al.  A Formal Framework for On-line Software Version Change , 1996, IEEE Trans. Software Eng..

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

[10]  Hubertus Franke,et al.  Customization Lite , 1997 .

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

[12]  Michael Stumm,et al.  Tornado: maximizing locality and concurrency in a shared memory multiprocessor operating system , 1999, OSDI '99.

[13]  Daniel Pierre Bovet,et al.  Understanding the Linux Kernel , 2000 .

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

[15]  Dilma Da Silva,et al.  An infrastructure for multiprocessor run-time adaptation , 2002, WOSS '02.

[16]  Paul E. McKenney,et al.  READ-COPY UPDATE: USING EXECUTION HISTORY TO SOLVE CONCURRENCY PROBLEMS , 2002 .

[17]  Andy Oram,et al.  Understanding the Linux Kernel, Second Edition , 2002 .

[18]  Dilma Da Silva,et al.  Providing a Linux API on the Scalable K42 Kernel , 2003, USENIX Annual Technical Conference, FREENIX Track.

[19]  Dilma Da Silva,et al.  Enabling Scalable Performance for General Purpose Workloads on Shared Memory Multiprocessors , 2003 .

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

[21]  Liuba Shrira,et al.  Lazy modular upgrades in persistent object stores , 2003, OOPSLA.

[22]  Dilma Da Silva,et al.  Improving operating system availability with dynamic update , 2004 .

[23]  Gavin M. Bierman,et al.  Mutatis Mutandis: Safe and predictable dynamic software updating , 2007, TOPL.

[24]  Kasper V. Lund,et al.  Design, implementation, and evaluation of the Resilient Smalltalk embedded platform , 2005, Comput. Lang. Syst. Struct..

[25]  Christopher G. Lasater,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

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