skip to main content
research-article

The design and implementation of microdrivers

Published: 01 March 2008 Publication History

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.

Supplementary Material

JPG File (1346303.jpg)
index.html (index.html)
Slides from the presentation
ZIP File (p168-vinod-slides.zip)
Supplemental material for The design and implementation of microdrivers
Audio only (1346303.mp3)
Video (1346303.mp4)

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]
T. Ball and S. K. Rajamani. The SLAM project: Debugging system software via static analysis. In POPL, 2002.
[4]
B. N. Bershad, T. E. Anderson, E. D. Lazowska, and H. M. Levy. Lightweight remote procedure call. ACM TOCS, 8(1), 1990.
[5]
D. Brumley and D. Song. Privtrans: Automatically partitioning programs for privilege separation. In USENIX Security, 2004.
[6]
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.
[7]
A. Chou, J. Yang, B. Chelf, S. Hallem, and D. Engler. An empirical study of operating system errors. In SOSP, 2001.
[8]
P. Chubb. Get more device drivers out of the kernel! In Ottawa Linux Symp., 2004.
[9]
C. L. Conway and S. A. Edwards. NDL: A domain-specific language for device drivers. In LCTES, 2004.
[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]
D. R. Engler, B. Chelf, A. Chou, and S. Hallem. Checking system rules using system-specific, programmer-written compiler extensions. In OSDI, 2000.
[13]
Ú. Erlingsson, T. Roeder, and T. Wobber. Virtual environments for unreliable extensions. Technical Report MSR-TR-05-82, Microsoft Research, June 2005.
[14]
M. Rozier et al. Overview of the Chorus distributed operating system. In USENIX Symp. on Microkernels & other kernel architectures, 1992.
[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]
V. Ganapathy, A. Balakrishnan, M. M. Swift, and S. Jha. Microdrivers: A new architecture for device drivers. In HotOS, 2007.
[17]
G. C. Hunt and M. L. Scott. The Coign automatic distributed partitioning system. In OSDI, 1999.
[18]
Jungo. Windriver cross platform device driver development environment. Technical report, Jungo Corporation, February 2002. http://www.jungo.com/windriver.html.
[19]
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.
[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]
J. LeVasseur, V. Uhlig, J. Stoess, and S. Gotz. Unmodified device driver reuse and improved system dependability via virtual machines. In OSDI, 2004.
[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]
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.
[30]
N. Nethercode and J. Seward. Valgrind: A framework for heavyweight dynamic binary instrumentation. In PLDI, 2007.
[31]
A. Purohit, C. P. Wright, J. Spadavecchia, and E. Zadok. Cosy: Develop in user-land, run in kernel-mode. In HotOS, 2003.
[32]
M. E. Russionvich and D. A. Solomon. Inside Windows 2000. Microsoft Press, Redmond, Washington, 2000.
[33]
David A. Solomon. Inside Windows NT. Microsoft Press, 1998.
[34]
Sun Microsystems. Java idl. http://java.sun.com/products/jdk/idl.
[35]
M. M. Swift, M. Annamalai, B. N. Bershad, and H. M. Levy. Recovering device drivers. In OSDI, 2004.
[36]
M. M. Swift, B. N. Bershad, and H. M. Levy. Improving the reliability of commodity operating systems. ACM TOCS, 23(1), February 2005.
[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, and W. Vogels. U-Net: A user-level network interface for parallel and distributed computing. In SOSP, 1995.
[40]
E. Witchel, J. Rhee, and K. Asanovic. Mondrix: Memory isolation for Linux using Mondriaan memory protection. In SOSP, 2005.
[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]
S. Zdancewic, L. Zheng, N. Nystrom, and A. C. Myers. Secure program partitioning. ACM TOCS, 20(3), August 2002.
[43]
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.

Cited By

View all
  • (2021)BDUSProceedings of the 14th ACM International Conference on Systems and Storage10.1145/3456727.3463768(1-11)Online publication date: 14-Jun-2021
  • (2015)MoIOProceedings of the 2015 IEEE 26th International Symposium on Software Reliability Engineering (ISSRE)10.1109/ISSRE.2015.7381840(472-483)Online publication date: 2-Nov-2015
  • (2012)Open data kit sensorsProceedings of the 10th international conference on Mobile systems, applications, and services10.1145/2307636.2307669(351-364)Online publication date: 25-Jun-2012
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGOPS Operating Systems Review
ACM SIGOPS Operating Systems Review  Volume 42, Issue 2
ASPLOS '08
March 2008
339 pages
ISSN:0163-5980
DOI:10.1145/1353535
Issue’s Table of Contents
  • cover image ACM Conferences
    ASPLOS XIII: Proceedings of the 13th international conference on Architectural support for programming languages and operating systems
    March 2008
    352 pages
    ISBN:9781595939586
    DOI:10.1145/1346281
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 March 2008
Published in SIGOPS Volume 42, Issue 2

Check for updates

Author Tags

  1. device drivers
  2. program partitioning
  3. reliability

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)104
  • Downloads (Last 6 weeks)4
Reflects downloads up to 07 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2021)BDUSProceedings of the 14th ACM International Conference on Systems and Storage10.1145/3456727.3463768(1-11)Online publication date: 14-Jun-2021
  • (2015)MoIOProceedings of the 2015 IEEE 26th International Symposium on Software Reliability Engineering (ISSRE)10.1109/ISSRE.2015.7381840(472-483)Online publication date: 2-Nov-2015
  • (2012)Open data kit sensorsProceedings of the 10th international conference on Mobile systems, applications, and services10.1145/2307636.2307669(351-364)Online publication date: 25-Jun-2012
  • (2011)SRCProceedings of the international conference on Supercomputing10.1145/1995896.1995954(371-371)Online publication date: 31-May-2011
  • (2024)TeeFilter: High-Assurance Network Filtering Engine for High-End IoT and Edge Devices based on TEEsProceedings of the 19th ACM Asia Conference on Computer and Communications Security10.1145/3634737.3637643(1568-1583)Online publication date: 1-Jul-2024
  • (2023)Extending Rust with Support for Zero Copy CommunicationProceedings of the 12th Workshop on Programming Languages and Operating Systems10.1145/3623759.3624552(74-82)Online publication date: 23-Oct-2023
  • (2023)CAUSEC: Cache-Based Secure Key Computation with (Mostly) Deprivileged Execution2023 IEEE 43rd International Conference on Distributed Computing Systems (ICDCS)10.1109/ICDCS57875.2023.00059(84-95)Online publication date: Jul-2023
  • (2022)Minimum viable device drivers for ARM trustzoneProceedings of the Seventeenth European Conference on Computer Systems10.1145/3492321.3519565(300-316)Online publication date: 28-Mar-2022
  • (2021)Understanding the Overheads of Hardware and Language-Based IPC MechanismsProceedings of the 11th Workshop on Programming Languages and Operating Systems10.1145/3477113.3487275(53-61)Online publication date: 25-Oct-2021
  • (2021)Isolation in RustProceedings of the 11th Workshop on Programming Languages and Operating Systems10.1145/3477113.3487272(76-83)Online publication date: 25-Oct-2021
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media