Dynamic software updating c
Researchers compare DSU-capable variants of programs to the original program to assess safety and performance overhead.
The location in a program where a dynamic update occurs is referred to as an update point.
Redundancy-based updates require extra hardware resources, which may not otherwise be needed, and can require significant changes to application code.
Checkpointing to and restoring from disk can introduce a long delays (tens of seconds to minutes).
However, both of those systems require target programs to pass a static analysis that may be over-conservative.
They also perform significant source-to-source compilation of the original program, which adds overhead and can inhibit compiler optimizations.
Existing DSU implementations vary widely in their treatment of update points.
In our own experience, virtually all of the work required to add Kitsune integration with an existing project occurs in the first version.Kitsune is a simple framework that C programmers can use to write software that can be updated on the fly.Such dynamic software updates preserve in-memory state and active connections, thus avoiding the disruption of shutdown-and-restart.Kitsune is much gentler on the host application, requiring no static analysis, and very little (potentially no) source-to-source rewriting. In our benchmarks, the time from when a program first signals that an update is required, to the time the program transfers control into Kitsune, to the time when the new version of the program has taken over and finished initializing all state, is generally less than 200ms, and less than 500ms in the worst cases.In general, the time for a dynamic update depends on the structure of the program, and the nature of the change.