Stories
Slash Boxes
Comments

SoylentNews is people

SoylentNews is powered by your submissions, so send in your scoop. Only 18 submissions in the queue.

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