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 条
[31]   Primitives for the Dynamic Evolution of Component-Based Applications [J].
Oriol, Manuel .
APPLIED COMPUTING 2007, VOL 1 AND 2, 2007, :1122-1123
[32]   Real-time Dynamic Reconfiguration for IEC 61499 [J].
Prenzel, Laurin ;
Hofmann, Simon ;
Steinhorst, Sebastian .
2022 IEEE 5TH INTERNATIONAL CONFERENCE ON INDUSTRIAL CYBER-PHYSICAL SYSTEMS, ICPS, 2022,
[33]   Safe and Timely Dynamic Updates for Multi-threaded Programs [J].
Neamtiu, Iulian ;
Hicks, Michael .
PLDI'09 PROCEEDINGS OF THE 2009 ACM SIGPLAN CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION, 2009, :13-24
[34]   Safe and Timely Dynamic Updates for Multi-threaded Programs [J].
Neamtiu, Iulian ;
Hicks, Michael .
ACM SIGPLAN NOTICES, 2009, 44 (06) :13-24
[35]   Developing dynamic-reconfigurable communication protocol stacks using Java']Java [J].
Lee, YF ;
Chang, RC .
SOFTWARE-PRACTICE & EXPERIENCE, 2005, 35 (06) :601-620
[36]   Safe and Atomic Run-time Code Evolution for Java']Java and its Application to Dynamic AOP [J].
Wuerthinger, Thomas ;
Ansaloni, Danilo ;
Binder, Walter ;
Wimmer, Christian ;
Moessenboeck, Hanspeter .
ACM SIGPLAN NOTICES, 2011, 46 (10) :825-844
[37]   Safe and Atomic Run-time Code Evolution for Java']Java and its Application to Dynamic AOP [J].
Wuerthinger, Thomas ;
Ansaloni, Danilo ;
Binder, Walter ;
Wimmer, Christian ;
Moessenboeck, Hanspeter .
OOPSLA 11: PROCEEDINGS OF THE 2011 ACM INTERNATIONAL CONFERENCE ON OBJECT ORIENTED PROGRAMMING SYSTEMS LANGUAGES AND APPLICATIONS, 2011, :825-844