Live updating operating systems using virtualization
Second, they usually lack the mechanism that supports safe points detection (e.g. It makes a quiescent state detection either very time consuming or simply impractical.
Furthermore, it is very rare for hot spots in an operating system to enter a quiescent state in which live updates can be safely applied.
This necessitates an efficient way to track the states of the operating system, for example, using a reference counter to track the number of threads executing in an updatable unit.
Finally, an effective approach is required to redirect invocations from the original unit to the newly updated unit after a dynamic patch is applied.
Under such circumstances, emergency patches and updates need to be indefinitely postponed, exposing the whole system to possible attacks or corruption.
Finally, even if such a safe state could be reached and detected, due to the fact that the update process is executing inside the operating system, it may trigger an execution of the code in the patch program and result in a dead lock situation or an inconsistent state.
However, most existing operating systems are not designed with a live update capability in mind.