In general, microkernel-based approaches require a completere-design of an existing OS, and are not practical to apply to complex commercial server-OSs. For example, Giuffrida et al [12] advocate an event-driven microkernel OS-design, and claim that such a design allows controlled recovery from arbitrary crash failures. In their proposal, the OS consists of a set of separate components, where each component owns its private state, runs in user-space, has its own private data protected by the memory management
unit (MMU), and exposes a well-defined interface. CuriOS[6] is another microkernel-based OS that relies on having components store part of their address space in their client’s address space. Upon an OS failure, the affected component is restarted and the state is restored from the previous client state. CuriOS’s design does not protect from an error that is being propagated from one component to another.