ABSTRACT
Device drivers commonly execute in the kernel to achieve high performance and easy access to kernel services. However, this comes at the price of decreased reliability and increased programming difficulty. Driver programmers are unable to use user-mode development tools and must instead use cumbersome kernel tools. Faults in kernel drivers can cause the entire operating system to crash. User-mode drivers have long been seen as a solution to this problem, but suffer from either poor performance or new interfaces that require a rewrite of existing drivers.
This paper introduces the Microdrivers architecture that achieves high performance and compatibility by leaving critical path code in the kernel and moving the rest of the driver code to a user-mode process. This allows data-handling operations critical to I/O performance to run at full speed, while management operations such as initialization and configuration run at reduced speed in user-level. To achieve compatibility, we present DriverSlicer, a tool that splits existing kernel drivers into a kernel-level component and a user-level component using a small number of programmer annotations. Experiments show that as much as 65% of driver code can be removed from the kernel without affecting common-case performance, and that only 1-6 percent of the code requires annotations.
Supplemental Material
Available for Download
Supplemental material for The design and implementation of microdrivers
- Apple Inc. Introduction to I/O kit fundamentals, 2006.Google Scholar
- Francois Armand. Give a process to your drivers! In EurOpen Autumn 1991, September 1991.Google Scholar
- T. Ball and S. K. Rajamani. The SLAM project: Debugging system software via static analysis. In POPL, 2002. Google Scholar
Digital Library
- B. N. Bershad, T. E. Anderson, E. D. Lazowska, and H. M. Levy. Lightweight remote procedure call. ACM TOCS, 8(1), 1990. Google Scholar
Digital Library
- D. Brumley and D. Song. Privtrans: Automatically partitioning programs for privilege separation. In USENIX Security, 2004. Google Scholar
Digital Library
- S. Chong, J. Liu, A. C. Myers, X. Qi, K. Vikram, L. Zheng, and X. Zheng. Secure web applications via automatic partitioning. In SOSP, 2007. Google Scholar
Digital Library
- A. Chou, J. Yang, B. Chelf, S. Hallem, and D. Engler. An empirical study of operating system errors. In SOSP, 2001. Google Scholar
Digital Library
- P. Chubb. Get more device drivers out of the kernel! In Ottawa Linux Symp., 2004.Google Scholar
- C. L. Conway and S. A. Edwards. NDL: A domain-specific language for device drivers. In LCTES, 2004. Google Scholar
Digital Library
- Information Networks Division. Netperf: A network performance benchmark. http://www.netperf.org.Google Scholar
- J. Elson. FUSD: A Linux framework for user-space devices, 2004. User manual for FUSD 1.0.Google Scholar
- D. R. Engler, B. Chelf, A. Chou, and S. Hallem. Checking system rules using system-specific, programmer-written compiler extensions. In OSDI, 2000. Google Scholar
Digital Library
- Ú. Erlingsson, T. Roeder, and T. Wobber. Virtual environments for unreliable extensions. Technical Report MSR-TR-05-82, Microsoft Research, June 2005.Google Scholar
- M. Rozier et al. Overview of the Chorus distributed operating system. In USENIX Symp. on Microkernels & other kernel architectures, 1992. Google Scholar
Digital Library
- K. Fraser, S. Hand, R. Neugebauer, I. Pratt, A. Warfield, and M. Williamson. Safe hardware access with the Xen virtual machine monitor. In Workshop on Operating System and Architectural Support for the On-Demand IT Infrastructure, 2004.Google Scholar
- V. Ganapathy, A. Balakrishnan, M. M. Swift, and S. Jha. Microdrivers: A new architecture for device drivers. In HotOS, 2007. Google Scholar
Digital Library
- G. C. Hunt and M. L. Scott. The Coign automatic distributed partitioning system. In OSDI, 1999. Google Scholar
Digital Library
- Jungo. Windriver cross platform device driver development environment. Technical report, Jungo Corporation, February 2002. http://www.jungo.com/windriver.html.Google Scholar
- J. Lepreau, M. Hibler, B. Ford, J. Law, and D. B. Orr. In-kernel servers on Mach 3.0: Implementation and performance. In USENIX Mach III Symp., 1993. Google Scholar
Digital Library
- B. Leslie, P. Chubb, N. Fitzroy-Dale, S. Gotz, C. Gray, L. Macpherson, D. Potts, Y. Shen, K. Elphinstone, and G. Heiser. User-level device drivers: Achieved performance. Jour. Comp. Sci. and Tech., 20(5), 2005.Google Scholar
- J. LeVasseur, V. Uhlig, J. Stoess, and S. Gotz. Unmodified device driver reuse and improved system dependability via virtual machines. In OSDI, 2004. Google Scholar
Digital Library
- J. Liedtke. On μ-kernel construction. In SOSP, 1995.Google Scholar
Digital Library
- A. Manolitzas. A specific domain language for network interface cards, 2001.Google Scholar
- F. Mérillon, L. Réveillère, C. Consel, R. Marlet, and G. Muller. Devil: An IDL for hardware programming. In OSDI, 2000.Google Scholar
Digital Library
- Microsoft. Architecture of the user-mode driver framework, May 2006. Version 0.7.Google Scholar
- Microsoft Corp. Wdm: Introduction to windows driver model. http://www.microsoft.com/whdc/archive/wdm.mspx.Google Scholar
- Microsoft Corporation. Windows XP embedded with service pack 1 reliability. http://msdn2.microsoft.com/enus/library/ms838661.aspx, January 2003.Google Scholar
- Microsoft Inc. Microsoft interface definition language.Google Scholar
- G. C. Necula, S. Mcpeak, S. P. Rahul, and W. Weimer. CIL: Intermediate language and tools for analysis and transformation of C programs. In Intl. Conf. on Compiler Constr., 2002. Google Scholar
Digital Library
- N. Nethercode and J. Seward. Valgrind: A framework for heavyweight dynamic binary instrumentation. In PLDI, 2007. Google Scholar
Digital Library
- A. Purohit, C. P. Wright, J. Spadavecchia, and E. Zadok. Cosy: Develop in user-land, run in kernel-mode. In HotOS, 2003. Google Scholar
Digital Library
- M. E. Russionvich and D. A. Solomon. Inside Windows 2000. Microsoft Press, Redmond, Washington, 2000.Google Scholar
- David A. Solomon. Inside Windows NT. Microsoft Press, 1998. Google Scholar
Digital Library
- Sun Microsystems. Java idl. http://java.sun.com/products/jdk/idl.Google Scholar
- M. M. Swift, M. Annamalai, B. N. Bershad, and H. M. Levy. Recovering device drivers. In OSDI, 2004. Google Scholar
Digital Library
- M. M. Swift, B. N. Bershad, and H. M. Levy. Improving the reliability of commodity operating systems. ACM TOCS, 23(1), February 2005. Google Scholar
Digital Library
- L. Torvalds. UIO: Linux patch for user-mode I/O, July 2007.Google Scholar
- K. T. Van Maren. The Fluke device driver framework. Master's thesis, Dept. of Computer Science, Univ. of Utah, December 1999.Google Scholar
- T. von Eicken, A. Basu, V. Buch, and W. Vogels. U-Net: A user-level network interface for parallel and distributed computing. In SOSP, 1995. Google Scholar
Digital Library
- E. Witchel, J. Rhee, and K. Asanovic. Mondrix: Memory isolation for Linux using Mondriaan memory protection. In SOSP, 2005. Google Scholar
Digital Library
- M. Young, M. Accetta, R. Baron, W. Bolosky, D. Golub, R. Rashid, and A. Tevanian. Mach: A new kernel foundation for UNIX development. In Summer USENIX Conference, 1986.Google Scholar
- S. Zdancewic, L. Zheng, N. Nystrom, and A. C. Myers. Secure program partitioning. ACM TOCS, 20(3), August 2002. Google Scholar
Digital Library
- F. Zhou, J. Condit, Z. Anderson, I. Bagrak, R. Ennals, M. Harren, G. Necula, and E. Brewer. SafeDrive: Safe and recoverable extensions using language-based techniques. In OSDI, 2006. Google Scholar
Digital Library
Index Terms
The design and implementation of microdrivers
Recommendations
The design and implementation of microdrivers
ASPLOS '08Device drivers commonly execute in the kernel to achieve high performance and easy access to kernel services. However, this comes at the price of decreased reliability and increased programming difficulty. Driver programmers are unable to use user-mode ...
The design and implementation of microdrivers
ASPLOS '08Device drivers commonly execute in the kernel to achieve high performance and easy access to kernel services. However, this comes at the price of decreased reliability and increased programming difficulty. Driver programmers are unable to use user-mode ...
The design and implementation of microdrivers
ASPLOS '08Device drivers commonly execute in the kernel to achieve high performance and easy access to kernel services. However, this comes at the price of decreased reliability and increased programming difficulty. Driver programmers are unable to use user-mode ...









Comments