On‐line software version change using state transfer between processes

The usual way of installing a new version of a piece of software is to shut down the running program and then install the new version. This necessitates a sometimes unacceptable delay during which service is denied to the users of the software. An on‐line software replacement system replaces parts of the software while it is in execution, thus eliminating the shutdown. In this paper, we describe a system for on‐line software version change for software written in the C language. When the change is initiated by the user, the system instantiates a new process with the new version of the software, transfers state from the old process to the new one at an appropriate time, and transfers the control to the new process. The user sees a minimal delay in this switchover.

[1]  Edsger W. Dijkstra,et al.  Guarded commands, non-determinacy and a calculus for the derivation of programs , 1975, Language Hierarchies and Interfaces.

[2]  Jeff Magee,et al.  The Evolving Philosophers Problem: Dynamic Change Management , 1990, IEEE Trans. Software Eng..

[3]  Walter F. Tichy,et al.  Implementation and evaluation of a revision control system , 1982 .

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

[5]  Ophir Frieder,et al.  On dynamically updating a computer program: From concept to prototype , 1991, J. Syst. Softw..

[6]  Andrew Birrell,et al.  Implementing Remote procedure calls , 1983, SOSP '83.

[7]  Ophir Frieder,et al.  Dynamic program updating: A software maintenance technique for minimizing software, downtime , 1989, J. Softw. Maintenance Res. Pract..

[8]  D. Perry The Inscape Environment , 1989, 11th International Conference on Software Engineering.

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

[10]  James M. Purtilo,et al.  Dynamic reconfiguration of distributed programs , 1991, [1991] Proceedings. 11th International Conference on Distributed Computing Systems.

[11]  Morris Sloman,et al.  Constructing Distributed Systems in Conic , 1989, IEEE Trans. Software Eng..

[12]  James M. Purtilo,et al.  Surgeon: a packager for dynamically reconfigurable distributed applications , 1992, Softw. Eng. J..

[13]  O. Frieder,et al.  Dynamically updating distributed software: supporting change in uncertain and mistrustful environments , 1989, Proceedings. Conference on Software Maintenance - 1989.

[14]  Andrew Birrell Secure communication using remote procedure calls , 1985, TOCS.

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

[16]  James M. Purtilo,et al.  The POLYLITH software bus , 1994, TOPL.

[17]  Jeff Magee,et al.  Dynamic Configuration for Distributed Systems , 1985, IEEE Transactions on Software Engineering.

[18]  Mario Barbacci,et al.  Application-level programming , 1990, Proceedings.,10th International Conference on Distributed Computing Systems.

[19]  Edward H. Bersoff,et al.  Elements of Software Configuration Management , 1984, IEEE Transactions on Software Engineering.