Information Technology Reference
In-Depth Information
Challenge: Device Driver Reliability
Because device drivers are hardware-specific, they are often written and updated by
the hardware manufacturer rather than the operating system's main authors. Further-
more, because there are large numbers of devices—some operating systems support
tens of thousands of devices—device driver code may represent a large fraction of an
operating system's code.
Unfortunately, bugs in device drivers have the potential to affect more than the device.
A device driver usually runs as part of the operating system kernel since kernel routines
depend on it and because it needs to access the hardware of its device. However, if
the device driver is part of the kernel, then a device driver's bugs have the potential to
affect the overall reliability of a system. For example, in 2003 it was reported that drivers
caused about 85% of failures in the Windows XP operating system.
To improve reliability, operating systems are increasingly using protection techniques
similar to those used to isolate user-level programs to isolate device drivers from the
kernel and from each other.
An operating system may have to deal with many different I/O devices. For
example, a laptop on a desk might be connected to two keyboards (one internal
and one external), a trackpad, a mouse, a wired ethernet, a wireless 802.11
network, a wireless bluetooth network, two disk drives (one internal and one
external), a microphone, a speaker, a camera, a printer, a scanner, and a USB
thumb drive. And that is just a handful of the literally thousands of devices
that could be attached to a computer today. Building an operating system that
treats each case separately would be impossibly complex.
Layering helps simplify operating systems by providing common ways to
access various classes of devices. For example, for any given operating system,
storage device drivers typically implement a standard block device interface that
Denition: block device
allows data to be read or written in fixed-sized blocks (e.g., 512, 2048, or 4096
bytes).
Such a standard interface lets an operating system easily use a wide range of
similar devices. A file system implemented to run on top of the standard block
device interface can store files on any storage device whose driver implements
that interface, be it a Seagate spinning disk drive, an Intel solid state drive,
a Western Digital RAID, or an Amazon Simple Block Store volume. These
devices all have different internal organizations and control registers, but if each
manufacturer provides a device driver that exports the standard interface, the
rest of the operating system does not need to be concerned with these per-device
details.
Search WWH ::




Custom Search