The Design and Implementation of Microdrivers
Device drivers can be considered as an extension of the operating system's kernel, they work in kernel-mode where they have privileges similar to the kernel itself. Furthermore, to write device drivers, the programmer cannot use user-mode development tools. Although running device drivers in kernel-mode is good for performance, but the drawback is that they decrease the reliability of the operating system. For example, one device driver that is written in a bad way can cause the kernel of operating system to crash, which means the whole machine will stop. According to the paper 89% of Windows XP crashes are caused by device drivers, while in Linux driver code has 2 to 7 times the bug density of other kernel's parts. To mitigate the reliability problem of device drivers, the authors of this paper proposed Microdrivers which is an idea that is obviously inspired by microkernel design. A microdriver has two parts, the first one called k-driver which is a portion of device driver's code that works in kernel-mode due to its performance requirements, the second part is u-driver which is the other portion of device driver's code that work in user-mode as a process. In this way, most of device driver's code can be moved to the userspace, which serves the reliability of the operating system.
Tweet
For Programmers Series are documents provided by ResearchCoders that explain the ideas of the paper for the programmers, you can download them from here. Please note that we always recommend to read the original paper also for better understanding.
# | Author | Download |
---|---|---|
1 | Mohammed Q. Hussain | Download |
If you've got an idea that has not mentioned in the original research and you think adding it to implemenations can be useful, you can share your idea here.