Nooks: an architecture for reliable device drivers

With the enormous growth in processor performance over the last decade, it is clear that reliability, rather than performance, is now the greatest challenge for computer systems research. This is particularly true in the context of Internet services that require 24x7 operation and home computers with no professional administration. While operating system products have matured and become more reliable, they are still the source of a significant number of failures. Furthermore, recent studies show that device drivers are frequently responsible for operating system failures. For example, a study at Stanford University found that Linux drivers have 3 to 7 times the bug frequency as the rest of the OS [4]. An analysis of product support calls for Windows 2000 showed that device drivers accounted for 27% of crashes, compared to 2% for the kernel itself [16].

[1]  T. Chiueh,et al.  Integrating segmentation and paging protection for safe, efficient and transparent software extensions , 2000, OPSR.

[2]  Sriram K. Rajamani,et al.  The SLAM project: debugging system software via static analysis , 2002, POPL '02.

[3]  Dawson R. Engler,et al.  Exokernel: an operating system architecture for application-level resource management , 1995, SOSP.

[4]  J. Davenport Editor , 1960 .

[5]  Peter M. Chen,et al.  Discount Checking: Transparent, Low-Overhead Recovery for General Applications , 1998 .

[6]  Takahiro Shinagawa,et al.  Exploiting Segmentation Mechanism for Protecting against Malicious Mobile Code , 2000 .

[7]  Laurent Réveillère,et al.  Devil: an IDL for hardware programming , 2000, OSDI.

[8]  Richard E. Kessler,et al.  The Alpha 21264 microprocessor , 1999, IEEE Micro.

[9]  J. Liedtke On -Kernel Construction , 1995 .

[10]  Margo I. Seltzer,et al.  Dealing with disaster: surviving misbehaved kernel extensions , 1996, OSDI '96.

[11]  Mahadev Satyanarayanan,et al.  Lightweight recoverable virtual memory , 1993, SOSP '93.

[12]  Brian N. Bershad,et al.  Extensibility safety and performance in the SPIN operating system , 1995, SOSP.

[13]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[14]  Greg Nelson,et al.  Systems programming in modula-3 , 1991 .

[15]  Galen C. Hunt,et al.  Creating user-mode device drivers with a proxy , 1997 .

[16]  Junfeng Yang,et al.  An empirical study of operating systems errors , 2001, SOSP.

[17]  Robert Wahbe,et al.  Efficient software-based fault isolation , 1994, SOSP '93.

[18]  Jochen Liedtke,et al.  On micro-kernel construction , 1995, SOSP.