ACM Home Page
Please provide us with feedback. Feedback
The design and implementation of microdrivers
Full text FlvFlv (20:00),  Mp3Mp3 (8.77 MB),  PdfPdf (399 KB)
Source
Architectural Support for Programming Languages and Operating Systems archive
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems table of contents
Seattle, WA, USA
SESSION: Performance table of contents
Pages 168-178  
Year of Publication: 2008
ISBN:978-1-59593-958-6
Also published in ...
Authors
Vinod Ganapathy  Rutgers University, Piscataway, NJ
Matthew J. Renzelmann  University of Wisconsin-Madison, Madison, WI
Arini Balakrishnan  Sun Microsystems, Santa Clara, CA
Michael M. Swift  University of Wisconsin-Madison, Madison, WI
Somesh Jha  University of Wisconsin-Madison, Madison, WI
Sponsors
ACM: Association for Computing Machinery
SIGARCH: ACM Special Interest Group on Computer Architecture
SIGPLAN: ACM Special Interest Group on Programming Languages
SIGOPS: ACM Special Interest Group on Operating Systems
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 22,   Downloads (12 Months): 202,   Citation Count: 2
Additional Information:

appendices and supplements   abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1346281.1346303
What is a DOI?

APPENDICES and SUPPLEMENTS
Supplemental material for The design and implementation of microdrivers


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.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
Apple Inc. Introduction to I/O kit fundamentals, 2006.
 
2
Francois Armand. Give a process to your drivers! In EurOpen Autumn 1991, September 1991.
3
4
 
5
6
7
 
8
P. Chubb. Get more device drivers out of the kernel! In Ottawa Linux Symp., 2004.
9
 
10
Information Networks Division. Netperf: A network performance benchmark. http://www.netperf.org.
 
11
J. Elson. FUSD: A Linux framework for user-space devices, 2004. User manual for FUSD 1.0.
 
12
 
13
Ú. Erlingsson, T. Roeder, and T. Wobber. Virtual environments for unreliable extensions. Technical Report MSR-TR-05-82, Microsoft Research, June 2005.
 
14
 
15
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.
 
16
 
17
 
18
Jungo. Windriver cross platform device driver development environment. Technical report, Jungo Corporation, February 2002. http://www.jungo.com/windriver.html.
 
19
 
20
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.
 
21
 
22
J. Liedtke. On μ-kernel construction. In SOSP, 1995.
 
23
A. Manolitzas. A specific domain language for network interface cards, 2001.
 
24
F. Mérillon, L. Réveillère, C. Consel, R. Marlet, and G. Muller. Devil: An IDL for hardware programming. In OSDI, 2000.
 
25
Microsoft. Architecture of the user-mode driver framework, May 2006. Version 0.7.
 
26
Microsoft Corp. Wdm: Introduction to windows driver model. http://www.microsoft.com/whdc/archive/wdm.mspx.
 
27
Microsoft Corporation. Windows XP embedded with service pack 1 reliability. http://msdn2.microsoft.com/enus/library/ms838661.aspx, January 2003.
 
28
Microsoft Inc. Microsoft interface definition language.
 
29
30
 
31
 
32
M. E. Russionvich and D. A. Solomon. Inside Windows 2000. Microsoft Press, Redmond, Washington, 2000.
 
33
 
34
Sun Microsystems. Java idl. http://java.sun.com/products/jdk/idl.
 
35
36
 
37
L. Torvalds. UIO: Linux patch for user-mode I/O, July 2007.
 
38
K. T. Van Maren. The Fluke device driver framework. Master's thesis, Dept. of Computer Science, Univ. of Utah, December 1999.
39
40
 
41
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.
42
 
43


Collaborative Colleagues:
Vinod Ganapathy: colleagues
Matthew J. Renzelmann: colleagues
Arini Balakrishnan: colleagues
Michael M. Swift: colleagues
Somesh Jha: colleagues