User-Level Device Drivers: Achieved Performance

@article{Leslie2005UserLevelDD,
  title={User-Level Device Drivers: Achieved Performance},
  author={Ben Leslie and Peter Chubb and Nicholas Fitzroy-Dale and Stefan G{\"o}tz and Charles Gray and Luke Macpherson and Daniel Potts and Yue-Ting Shen and Kevin Elphinstone and Gernot Heiser},
  journal={Journal of Computer Science and Technology},
  year={2005},
  volume={20},
  pages={654-664}
}
Running device drivers as unprivileged user-level code, encapsulated into their own process, has often been proposed as a technique for increasing system robustness. However, in the past, systems based on user-level drivers have generally exhibited poor I/O performance. Consequently, user-level device drivers have never caught on to any significant degree. In this paper we demonstrate that it is possible to build systems which employ user-level device drivers, without significant performance… 

Microdrivers: A New Architecture for Device Drivers

The microdriver architecture and techniques to refactor existing device drivers into microdrivers are presented, achieving most of the benefits of user- mode drivers with the performance of kernel-mode drivers.

Generic User-Level PCI Drivers

The Device Driver Environment (DDE) is presented, which uses the UIO framework supplemented by some modifications, which allow running any recent PCI driver from the Linux kernel without modifications in user space.

SIDE: Isolated and efficient execution of unmodified device drivers

  • Yifeng SunT. Chiueh
  • Computer Science
    2013 43rd Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN)
  • 2013
An isolated device driver execution system called SIDE (Streamlined Isolated Driver Execution), which focuses specifically on unmodified device drivers and strives to avoid changing the existing kernel code as much as possible.

Performance Optimizations for Isolated Driver Domains

The key idea is to replace the interrupt-based notification between domains with a spinning-based approach, thus trading CPU capacity for increased throughput, and the results show that the solution matches or outperforms Xen's isolated driver domain in most scenarios the authors considered.

The design and implementation of microdrivers

The Microdrivers architecture is introduced, a tool 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, which allows data-handling operations critical to I/O performance to run at full speed, while management operations run at reduced speed in user-level.

U2MDF: A Unified User-Mode Driver Framework

Experimental data shows U2MDF not only obtains good performance and compatibility but also provides a unified framework for user-mode device drivers' development.

Design and Overhead Estimation of Device Driver Process

A method for constructing device driver as an user process and evaluating these overhead and it is shown that the overhead of device driver process can be estimated.

Making operating systems resilient to hardware

This thesis proposal seeks to improve the state of modern device drivers against the backdrop of reliability through three techniques that improve the tolerance of modern drivers against unreliable hardware, make drivers more robust by automatically patching driver code and propose some guidelines on how drivers can improve by organizing themselves better.

BDUS: implementing block devices in user space

This paper proposes BDUS, a framework that enables the development of block device drivers in user space, and provides a fully-functional, open-source implementation for Linux, showing that the former incurs less overhead on throughput and latency, while also reducing CPU utilization.

Device Driver Safety Through a Reference Validation Mechanism

This paper describes how to move device drivers out of the trusted computing base, by running them without supervisor privileges and constraining their interactions with hardware devices, by leveraging hardware isolation and checking their behavior against a safety specification.
...

References

SHOWING 1-10 OF 28 REFERENCES

User Level IPC and Device Management in the Raven Kernel

  • D. RitchieG. Neufeld
  • Computer Science
    USENIX Microkernels and Other Kernel Architectures Symposium
  • 1993
The Raven kernel utilizes user level implementation techniques to reduce kernel intervention for many common services, and generates no kernel interactions per iteration in the best case, and two kernel interactions in the worst case.

Nooks: an architecture for reliable device drivers

With the enormous growth in processor performance over the last decade, it is clear that reliability, rather than performance, is now the greatest challenge for computer systems research. This is

Creating user-mode device drivers with a proxy

Experimental results show that in many cases, the overhead of moving to user-mode for processing I/O can be masked by the inherent costs of accessing physical devices.

THE FLUKE DEVICE DRIVER FRAMEWORK

A framework whose design is based on running device drivers as usermode servers is presented, which resolves the fundamental execution environment mismatch and proposes guidelines for improving device drivers’ portability across different execution environments.

Improving the reliability of commodity operating systems

Nooks, a reliability subsystem that seeks to greatly enhance operating system reliability by isolating the OS from driver failures, represents a substantial step beyond the specialized architectures and type-safe languages required by previous efforts directed at safe extensibility.

Two years of experience with a μ-Kernel based OS

The basic components of the L3 operating system are described and the experiences of the first two years using it, which results from scientific research, but is addressed to commercial application.

The impact of operating system structure on memory system performance

This paper evaluates the memory system behavior of two distinctly different implementations of the UNIX operating system: DEC's Ultrix, a monolithic system, and Mach 3.0 with CMU's UNIX server, a microkernel-based system, showing that the micro kernel- based system executes substantially more non-idle system instructions for an equivalent workload than themonolithic system.

Virtual-Memory-Mapped Network Interfaces

Two multicomputer network interfaces are designed that significantly reduce this overhead, allowing user processes to communicate without expensive buffer management and without making system calls across the protection boundary separating user processes from the operating system kernel.

Experiences with a high-speed network adaptor: a software perspective

The problems the authors encountered while programming OSIRIS and optimizing network performance are identified, and how they either addressed them in the software, or had to modify the hardware.

Extensibility safety and performance in the SPIN operating system

This paper describes the motivation, architecture and performance of SPIN, an extensible operating system. SPIN provides an extension infrastructure, together with a core set of extensible services,