skip to main content
10.1145/378795.378798acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article

Dynamic software updating

Authors Info & Claims
Published:01 May 2001Publication History

ABSTRACT

Many important applications must run continuously and without interruption, yet 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, and ease of use.

We present a new 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 both contain 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 [17] or Typed Assembly Language [16]), which is native code accompanied by annotations that allow on-line 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. Performance experiments show that for FlashEd, the overhead due to updating is typically less than 1%.

References

  1. 1.The apache software foundation. http://www.apache.org.]]Google ScholarGoogle Scholar
  2. 2.A. Appel. Hot-sliding in ML, December 1994. Unpublished manuscript.]]Google ScholarGoogle Scholar
  3. 3.J. Armstrong, R. Virding, C. Wikstrom, and M. Williams. Concurrent Programming in Erlang. Prentice Hall, second edition, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. 4.T. Bloom. Dynamic Module Replacement in a Distributed Programming System. PhD thesis, Laboratory for Computer Science, The Massachussets Institute of Technology, March 1983.]]Google ScholarGoogle Scholar
  5. 5.B. Buck and J. K. Hollingsworth. An API for runtime code patching. Journal of High Performance Computing Applications, 14(4):317-329, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. 6.O. Frieder and M. E. Segal. On dynamically updating a computer program: From concept to prototype. Journal of Systems and Software, 14(2):111-128, September 1991.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. 7.S. Gilmore, D. Kirli, and C. Walton. Dynamic ML without Dynamic Types. Technical Report ECS-LFCS-97-378, Laboratory for the Foundations of Computer Science, The University of Edinburgh, December 1997.]]Google ScholarGoogle Scholar
  8. 8.D. Grossman and G. Morrisett. Scalable certification for Typed Assembly Language. In R. Harper, editor, Proceedings of the ACM SIGPLAN Workshop on Types in Compilation, volume 2071 of Lecture Notes in Computer Science. Springer-Verlag, October 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 9.D. Gupta, P. Jalote, and G. Barua. A formal framework for on-line software version change. Transactions on Software Engineering, 22(2):120-131, February 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. 10.M. Hicks. Dynamic Software Updating. PhD thesis, Department of Computer and Information Science, University of Pennsylvania, August 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. 11.M. Hicks, S. Weirich, and K. Crary. Safe and flexible dynamic linking of native code. In R. Harper, editor, Proceedings of the ACM SIGPLAN Workshop on Types in Compilation, volume 2071 of Lecture Notes in Computer Science. Springer-Verlag, September 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. 12.G. Hjalmtysson and R. Gray. Dynamic C++ classes, a lightweight mechanism to update code in a running program. In Proceedings of the USENIX Annual Technical Conference, June 1998.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 13.I. Lee. DYMOS: A Dynamic Modification System. PhD thesis, Department of Computer Science, University of Wisconsin, Madison, April 1983.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 14.S. Malabarba, R. Pandey, J. Gragg, E. Barr, and J. F. Barnes. Runtime support for type-safe dynamic Java classes. In Proceedings of the Fourteenth European Conference on Object-Oriented Programming, June 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. 15.G. Morrisett, K. Crary, N. Glew, D. Grossman, R. Samuels, F. Smith, D. Walker, S. Weirich, and S. Zdancewic. TALx86: A realistic typed assembly language. In Second Workshop on Compiler Support for System Software, Atlanta, May 1999.]]Google ScholarGoogle Scholar
  16. 16.G. Morrisett, D. Walker, K. Crary, and N. Glew. From System F to typed assembly language. ACM Transactions on Programming Languages and Systems, 21(3):527-568, May 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. 17.G. Necula. Proof-carrying code. In Twenty-Fourth ACM Symposium on Principles of Programming Languages, pages 106-119, Paris, Jan. 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. 18.M. Oehler and R. Glenn. HMAC-MD5 IP Authentication with Replay Prevention. Internet RFC 2085, February 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. 19.V. S. Pai, P. Druschel, and W. Zwaenepoel. Flash: An efficient and portable webserver. In Proceedings of the USENIX Annual Technical Conference, pages 106-119, Monterey, 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. 20.D. Pescovitz. Monsters in a box. Wired, 8(12):341-347, 2000.]]Google ScholarGoogle Scholar
  21. 21.J. Peterson, P. Hudak, and G. S. Ling. Principled dynamic code improvement. Technical Report YALEU/DCS/RR-1135, Department of Computer Science, Yale University, July 1997.]]Google ScholarGoogle Scholar
  22. 22.Tool Interface Standards Committee. Executable and Linking Format (ELF) specification, May 1995.]]Google ScholarGoogle Scholar
  23. 23.Mindcraft-webstone benchmark information. http://www.mindcraft.com/webstone.]]Google ScholarGoogle Scholar

Index Terms

  1. Dynamic software updating

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Conferences
            PLDI '01: Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
            June 2001
            331 pages
            ISBN:1581134142
            DOI:10.1145/378795

            Copyright © 2001 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 1 May 2001

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • Article

            Acceptance Rates

            PLDI '01 Paper Acceptance Rate30of144submissions,21%Overall Acceptance Rate406of2,067submissions,20%

            Upcoming Conference

            PLDI '24

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader