Affiliation:
1. University of Maryland, College Park, MD
2. The University of Texas at Austin, Austin, TX
Abstract
Many important applications must run continuously and without interruption, and yet also must be changed to fix bugs or upgrade functionality. No prior general-purpose methodology for dynamic updating achieves a practical balance between flexibility, robustness, low overhead, ease of use, and low cost.We present an approach for C-like languages that provides type-safe dynamic updating of native code in an extremely flexible manner---code, data, and types may be updated, at programmer-determined times---and permits the use of automated tools to aid the programmer in the updating process. Our system is based on
dynamic patches
that contain both the updated code and the code needed to transition from the old version to the new. A novel aspect of our patches is that they consist of
verifiable native code
(e.g. Proof-Carrying Code or Typed Assembly Language), which is native code accompanied by annotations that allow online verification of the code's safety. We discuss how patches are generated mostly automatically, 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, and generalize to present observations about updateable software development. Performance experiments show that for FlashEd, the overhead due to updating is low: typically less than 1 percent.
Publisher
Association for Computing Machinery (ACM)
Reference42 articles.
1. Apache. 2001. The Apache Software Foundation. http://www.apache.org.]] Apache. 2001. The Apache Software Foundation. http://www.apache.org.]]
2. Appel A. 1994. Hot-sliding in ML. Unpublished manuscript. http://www.cs.princeton.edu/~appel/papers/hotslide.ps.]] Appel A. 1994. Hot-sliding in ML. Unpublished manuscript. http://www.cs.princeton.edu/~appel/papers/hotslide.ps.]]
3. Armstrong J. Virding R. Wikstrom C. and Williams M. 1996. Concurrent Programming in Erlang Second ed. Prentice-Hall Englewood Cliffs N.J.]] Armstrong J. Virding R. Wikstrom C. and Williams M. 1996. Concurrent Programming in Erlang Second ed. Prentice-Hall Englewood Cliffs N.J.]]
4. What is a file synchronizer?
Cited by
59 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献