DynAMOS is a live updating system for operating system kernels. It's the first updating system that synchronizes updates of kernel subsystems that never stop running.
Updating software live is important because it does not interrupt the service provided to users. The software is updated while people use it, and people can't even tell the software was updated.
Kernel updates with DynAMOS are applied on the fly: no kernel reboot is required. They are also applied without requiring a kernel to have been specially designed to be updateable. Kernels gain for free the ability to mutate themselves while they are running.
On-the-fly updates are applied with a new mechanism called adaptive function cloning. It's a dynamic binary instrumentation mechanism that does two main things: (a) it overwrites live code to jump to a different location in memory, and (b) allows dynamically and adaptively switching execution flow among multiple versions of functions, possibly concurrently running.
Adaptive function cloning is necessary for dynamic replacement of non-quiescent kernel subsystems when the timeliness of an update depends on synchronization of multiple kernel paths, such as the scheduler and kernel threads.
Updates can be safely reversed. DynaMOS detects quiescence and can reverse updates with the guarantee that they are not used by the stack or program counter of any process.
DynAMOS also updates compact datatype definitions. When a new field is added, a shadow data structure containing the new field enlarges the datatype.
Updates applied successfully with DynAMOS include:
Extending the Linux 2.2 kernel process scheduler to support unobtrusive, fine-grain cycle stealing offered by the Linger-Longer system.