Dynamic software updating

被引:8
作者
Hicks, M
Nettles, S
机构
[1] Univ Maryland, Dept Comp Sci, College Pk, MD 20742 USA
[2] Univ Texas, Austin, TX 78712 USA
来源
ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS | 2005年 / 27卷 / 06期
关键词
dynamic software updating; typed assembly language;
D O I
10.1145/1108970.1108971
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
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.
引用
收藏
页码:1049 / 1096
页数:48
相关论文
共 37 条
  • [21] Formalization and Verification of Behavioral Correctness of Dynamic Software Updates
    Zhang, Min
    Ogata, Kazuhiro
    Futatsugi, Kokichi
    ELECTRONIC NOTES IN THEORETICAL COMPUTER SCIENCE, 2013, 294 : 12 - 23
  • [22] Dynamic Software Updates: A VM-centric Approach
    Subramanian, Suriya
    Hicks, Michael
    McKinley, Kathryn S.
    ACM SIGPLAN NOTICES, 2009, 44 (06) : 1 - 12
  • [23] Active DSU: Dynamic Software Updates for Active Functions
    Stromback, Filip
    Varro, Daniel
    PROCEEDINGS OF THE 2024 ACM SIGPLAN INTERNATIONAL SYMPOSIUM ON NEW IDEAS, NEW PARADIGMS, AND REFLECTIONS ON PROGRAMMING AND SOFTWARE, ONWARD! 2024, 2024, : 26 - 37
  • [24] Dynamic Software Updates: A VM-centric Approach
    Subramanian, Suriya
    Hicks, Michael
    McKinley, Kathryn S.
    PLDI'09 PROCEEDINGS OF THE 2009 ACM SIGPLAN CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION, 2009, : 1 - 12
  • [25] SoREn, How Dynamic Software Update Tools Can Help Cybersecurity Systems to Improve Monitoring and Actions
    Martinez, Sebastien
    Gransart, Christophe
    Stienne, Olivier
    Deniau, Virginie
    Bon, Philippe
    JOURNAL OF UNIVERSAL COMPUTER SCIENCE, 2022, 28 (01) : 27 - 53
  • [26] MUC: Updating cloud applications dynamically via multi-version execution
    Qiang, Weizhong
    Chen, Feng
    Yang, Laurence T.
    Jin, Hai
    FUTURE GENERATION COMPUTER SYSTEMS-THE INTERNATIONAL JOURNAL OF ESCIENCE, 2017, 74 : 254 - 264
  • [27] Rollback Sequences for Dynamic Reconfiguration of IEC 61499
    Prenzel, Laurin
    Hofmann, Simon
    Steinhorst, Sebastian
    2022 IEEE 20TH INTERNATIONAL CONFERENCE ON INDUSTRIAL INFORMATICS (INDIN), 2022, : 81 - 86
  • [28] Change Is the Only Constant: Dynamic Updates for Workflows
    Sokolowski, Daniel
    Weisenburger, Pascal
    Salvaneschi, Guido
    2022 ACM/IEEE 44TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE 2022), 2022, : 350 - 362
  • [29] Dynamic Rebinding for Concurrent Object Groups: Theory and practice
    Bravetti, Mario
    Giachino, Elena
    Lienhardt, Michael
    Wong, Peter Y. H.
    JOURNAL OF LOGICAL AND ALGEBRAIC METHODS IN PROGRAMMING, 2017, 86 (01) : 349 - 390
  • [30] Unrestricted and safe dynamic code evolution for Java']Java
    Wuerthinger, Thomas
    Wimmer, Christian
    Stadler, Lukas
    SCIENCE OF COMPUTER PROGRAMMING, 2013, 78 (05) : 481 - 498