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
|
Stephen Chong , Jed Liu , Andrew C. Myers , Xin Qi , K. Vikram , Lantian Zheng , Xin Zheng, Secure web application via automatic partitioning, Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles, October 14-17, 2007, Stevenson, Washington, USA
|
 |
7
|
Andy Chou , Junfeng Yang , Benjamin Chelf , Seth Hallem , Dawson Engler, An empirical study of operating systems errors, Proceedings of the eighteenth ACM symposium on Operating systems principles, October 21-24, 2001, Banff, Alberta, Canada
|
| |
8
|
P. Chubb. Get more device drivers out of the kernel! In Ottawa Linux Symp., 2004.
|
 |
9
|
Christopher L. Conway , Stephen A. Edwards, NDL: a domain-specific language for device drivers, Proceedings of the 2004 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems, June 11-13, 2004, Washington, DC, USA
|
| |
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
|
Dawson Engler , Benjamin Chelf , Andy Chou , Seth Hallem, Checking system rules using system-specific, programmer-written compiler extensions, Proceedings of the 4th conference on Symposium on Operating System Design & Implementation, p.1-1, October 22-25, 2000, San Diego, California
|
| |
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
|
Vinod Ganapathy , Arini Balakrishnan , Michael M. Swift , Somesh Jha, Microdrivers: a new architecture for device drivers, Proceedings of the 11th USENIX workshop on Hot topics in operating systems, p.1-6, May 07-09, 2007, San Diego, CA
|
| |
17
|
|
| |
18
|
Jungo. Windriver cross platform device driver development environment. Technical report, Jungo Corporation, February 2002. http://www.jungo.com/windriver.html.
|
| |
19
|
Jay Lepreau , Mike Hibler , Bryan Ford , Jeffrey Law, In-kernel servers on mach 3.0: implementation and performance, Proceedings of the 3rd conference on USENIX MACH III Symposium, p.2-2, April 19-21, 1993, Santa Fe, New Mexico
|
| |
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
|
Joshua LeVasseur , Volkmar Uhlig , Jan Stoess , Stefan Götz, Unmodified device driver reuse and improved system dependability via virtual machines, Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation, p.2-2, December 06-08, 2004, San Francisco, CA
|
| |
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
|
Amit Purohit , Charles P. Wright , Joseph Spadavecchia , Erez Zadok, Cosy: develop in user-land, run in kernel-mode, Proceedings of the 9th conference on Hot Topics in Operating Systems, p.19-19, May 18-21, 2003, Lihue, Hawaii
|
| |
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
|
Michael M. Swift , Muthukaruppan Annamalai , Brian N. Bershad , Henry M. Levy, Recovering device drivers, Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation, p.1-1, December 06-08, 2004, San Francisco, CA
|
 |
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
|
T. von Eicken , A. Basu , V. Buch , W. Vogels, U-Net: a user-level network interface for parallel and distributed computing (includes URL), Proceedings of the fifteenth ACM symposium on Operating systems principles, p.40-53, December 03-06, 1995, Copper Mountain, Colorado, United States
|
 |
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
|
Feng Zhou , Jeremy Condit , Zachary Anderson , Ilya Bagrak , Rob Ennals , Matthew Harren , George Necula , Eric Brewer, SafeDrive: safe and recoverable extensions using language-based techniques, Proceedings of the 7th symposium on Operating systems design and implementation, November 06-08, 2006, Seattle, Washington
|
CITED BY 2
|
|
|
|
|
Takahiro Shinagawa , Hideki Eiraku , Kouichi Tanimoto , Kazumasa Omote , Shoichi Hasegawa , Takashi Horie , Manabu Hirano , Kenichi Kourai , Yoshihiro Oyama , Eiji Kawai , Kenji Kono , Shigeru Chiba , Yasushi Shinjo , Kazuhiko Kato, BitVisor: a thin hypervisor for enforcing i/o device security, Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments, March 11-13, 2009, Washington, DC, USA
|
|