Stories
Slash Boxes
Comments

SoylentNews is people

Submission Preview

Link to Story

The Design and Implementation of Microdrivers

Accepted submission by Phoenix666 at 2015-11-14 15:03:12
Code

Device drivers commonly execute in the kernel to achieve high per-
formance and easy access to kernel services. However, this comes
at the price of decreased reliability and increased programming dif-
ficulty. Driver programmers are unable to use user-mode develop-
ment 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 [rutgers.edu] 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 per-
formance 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 anno-
tations. Experiments show that as much as 65% of driver code can
be removed from the kernel without affecting common-case perfor-
mance, and that only 1-6percent of the code requires annotations.


Original Submission