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.

    Introducing adaptive memory paging for efficient gang-scheduling in a Linux 2.4 cluster.

    Adaptively updating the Linux pipefs implementation during large data transfers.

    Introducing kernel-assisted process checkpointing offered by EPCKPT in Linux 2.4.

    Applying security fixes provided by the Openwall project.

    Injecting performance monitoring functionality in kernel functions.

    Updating DynAMOS itself.

The software is available here and there is a user manual [HTML single] [HTML multiple] [PDF]. There is also a paper:

    Dynamic and Adaptive Updates of Non-Quiescent Subsystems in Commodity Operating System Kernels. Kristis Makris, Kyung Dong Ryu, EuroSys 2007, March 2007. [PDF] [BibTex] [presentation slides]