MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  Dynamic software updating (2001) [115 citations — 15 self]

Download:
Download as a PDF | Download as a PS
by Michael Hicks, Jonathan T. Moore, Scott Nettles
http://www.cis.upenn.edu/~jonm/papers/dyn_update.ps
Add To MetaCart

Abstract:

Many important applications must run continuously and without interruption, yet must be changed to x bugs or upgrade functionality. To date, no existing dynamic updating system has achieved a practical balance between exibility, correctness, ease-of-use, and low overhead. We present a new approach that provides type-safe dynamic updating of native code in an extremely exible manner (functions and types may be updated, and at any time) and permits the use of automated tools to aid the programmer in the updating process. Our system is based around dynamic patches made up of proof-carrying code that both contain the updated code and the code needed to transition from the old version to the new. We discuss how patches are generated using a semiautomatic tool, how they are applied using dynamic-linking technology, and how code is compiled to make it updateable. To concretely illustrate our system, we have implemented a dynamically-updateable web server, FlashEd. We discuss our experience building and maintaining FlashEd. Performance experiments show that updateable FlashEd runs between 2 % and 6 % slower than a static one.

Citations

854 Proof-carrying code – Necula - 1997
730 The Java Programming Language – Arnold, Gosling - 1998
501 From system F to typed assembly language – MORRISETT, WALKER, et al. - 1998
401 Extensibility, safety and performance in the SPIN operating system – Bershad, Savage, et al. - 1995
287 Extended static checking for Java – Flanagan, Leino, et al. - 2002
266 A type-theoretic approach to higher-order modules with sharing – Harper, Lillibridge
152 PLAN: A packet language for active networks – Hicks, Kakkar, et al. - 1998
138 An API for Runtime Code Patching – Buck, Hollingsworth - 2000
133 Program fragments, linking, and modularization – Cardelli - 1997
129 TALx86: A realistic typed assembly language – Morrisett, Crary, et al. - 1999
118 Decentralized model for information flow control – Myers, Liskov - 1997
109 O'Toole Jr. Exokernel: An operating system architecture for application-level resource management – Engler, Kaashoek, et al. - 1995
73 What is a recursive module – Crary, Harper, et al. - 1999
72 Flexible type analysis – Crary, Weirich - 1999
71 Concurrent Programming in Erlang – Virding, Wikstrom, et al. - 1996
69 Type-Safe Delegation for Run-Time Component Adaptation – Kniesel
61 PLANet: An active internetwork – Hicks, Moore, et al. - 1999
54 Runtime Support for Type-Safe Dynamic Java Classes – Malabarba, Pandey, et al. - 2000
43 A secure PLAN – Hicks, Keromytis - 1999
42 Dynamic C++ Classes: A Lightweight Mechanism to Update Code in a Running Program – Hjalmtysson, Gray - 1998
41 A formal framework for on-line software version change – Gupta, Jalote, et al. - 1996
39 On dynamically updating a computer program: From concept to prototype – Segal
39 The development of Erlang – Armstrong - 1997
33 Dynamic Module Replacement in a Distributed Programming System – Bloom - 1983
32 Type-based hot swapping of running modules – Duggan - 2001
28 Reconfiguration and module replacement in Argus: Theory and Practice – Bloom, Day - 1993
26 A Web navigator with applets in Caml – Rouaix - 1996
21 Towards flexible and safe technology for runtime evolution of java language applications – Dmitriev - 2001
20 Dynamic ML without dynamic types – Gilmore, Kirli, et al. - 1997
20 On-line Software Version Change – Gupta - 1994
18 Extending the scope of syntactic abstraction – Waddell, Dybvig - 1999
17 DITools: Applicationlevel Support for Dynamic Extension and Flexible – Serra, Navarro, et al. - 2000
17 mod-a language for distributed programming – Cook - 1980
13 Adding new code to a running C++ program – Dorward, Sethi, et al. - 1990
7 Active networking means evolution (or enhanced extensibility required – Hicks, Nettles - 2000
7 An experimental telephony switching language – Armstrong, Virding - 1991
6 Principled dynamic code improvement – Peterson, Hudak, et al. - 1997
6 Linking programs in a single address space – Deller, Heiser - 1999
5 Monsters in a box – Pescovitz - 2000
4 Scalable certi for typed assembly language – Grossman, Morrisett - 2000
4 Safe and dynamic linking of native code – Hicks, Weirich, et al. - 2000
3 Hot-sliding in ML – Appel - 1994
3 Recon and module replacement in Argus: Theory and practice – Bloom, Day - 1993
3 Reppy. Concurrent Programming in ML – John - 1999
3 An abstract machine for module replacement – Walton, Kirli, et al. - 1998
2 On-the- program modi Systems for Dynamic Updating – Segal, Frieder - 1993
2 Java distributed run-time updating management system. http: //www.ida.liu.se/~jengu/jdrums – JDRUMS - 2003
1 DYMOS: A Dynamic Modi System – Lee - 1983
1 Flash: An ecient and portable webserver – Pai, Druschel, et al. - 1999
1 3] Typed assembly language homepage – Alexander - 1999