Device drivers are the major cause of operating system failure. Prior research proposed frameworks to improve the reliability of device drivers by means of driver restart. While avoiding any instrumentation of the driver, this approach does not always allow graceful recovery. In this paper, we propose a framework for self-healing device drivers that lets the driver developer consider and implement the failure recovery of device drivers. For this purpose, our framework provides easy to use and light-weight persistent memory that preserves the state of the driver needed to successfully recover. We developed a prototype on top of the L4 microkernel, and were able to achieve full recovery of crashed drivers as fast as 0.2 ms for different device drivers. In all cases, recovery was totally transparent for the user.
['Hiroo Ishikawa', 'Alexandre Courbot', 'Tatsuo Nakajima']
A Framework for Self-Healing Device Drivers