Device driver
From Free net encyclopedia
Image:Windowsloadingdrivers.jpg A device driver, often called a driver for short, is a computer program that enables another program, typically an operating system (OS), to interact with a hardware device.
Contents |
Device driver philosophy
The key design goal of device drivers is abstraction. Every model of hardware (even within the same class of device) is different. Newer models also are released by manufacturers that provide more reliable or better performance and these newer models are often controlled differently.
Computers and their operating systems cannot be expected to know how to control every device, both now and in the future. To solve this problem, OSes essentially dictate how every type of device should be controlled. The function of the device driver is then to translate these OS mandated function calls into device specific calls. In theory a new device, which is controlled in a new manner, should function correctly if a suitable driver is available. This new driver will ensure that the device appears to operate as usual from the operating systems's point of view.
Depending on the specific computer architecture, drivers can be 8-bit, 16-bit, 32-bit, and more recently, 64-bit. This corresponds directly to the architecture of the operating system for which those drivers were developed. For example, in 16-bit Windows 3.11, most drivers were 16-bits, while most drivers for 32-bit Windows XP are 32-bit. More recently, specific 64-bit Linux and Windows versions have required hardware vendors to provide newer 64-bit drivers for their devices.
Device driver development
Writing a device driver is considered a challenge in most cases, as it requires an in-depth understanding of how a given platform functions, both at the hardware and the software level. Because many device drivers execute in kernel mode, software bugs often have much more damaging effects to the system. This is in contrast to most types of user-level software running under modern operating systems, which can be stopped without greatly affecting the rest of the system. Even drivers executing in user mode can crash a system if the device being controlled is erroneously programmed. These factors make it more difficult and dangerous to diagnose problems.
All of this means that the engineers most likely to write device drivers come from the companies that develop the hardware. This is because they have more complete access to information about the design of their hardware than most outsiders. Moreover, it was traditionally considered in the hardware manufacturer's interest to guarantee that their clients would be able to use their hardware in an optimum way. However, in recent years non-vendors too have written numerous device drivers, mainly for use under free operating systems. In such cases, co-operation on behalf of the vendor is still important, however, as reverse engineering is much more difficult with hardware than it is with software, meaning it may take a long time to learn to operate hardware that has an unknown interface.
Device driver applications
Because of the diversity of modern hardware and operating systems, many ways exist in which drivers can be used. Drivers are used for interfacing with:
- Printers
- Video adapters
- Network cards
- Sound cards
- Local buses of various sorts - in particular, for bus mastering on modern systems
- Low-bandwidth I/O buses of various sorts (for pointing devices such as mice, keyboards, USB, etc.)
- computer storage device (hard disk, CD-ROM and floppy disk buses (ATA, SATA SCSI)
- Implementing support for different file systems
- Implementing support for image scanners and digital cameras
Common levels of abstraction for device drivers are:
- On the hardware side:
- Interfacing directly
- Using some higher-level interface (e.g. Video BIOS)
- Using another lower-level device driver (e.g. file system drivers using disk drivers)
- Simulating work with hardware, while doing something entirely different
- On the software side:
- Allowing the operating system direct access to hardware resources
- Implementing only primitives
- Implementing an interface for non-driver software (e.g. TWAIN)
- Implementing a language, sometimes quite high-level, e.g. PostScript
Choosing and installing the correct device drivers for given hardware is often a key component of computer system configuration.
Virtual device drivers
A particular variant of device drivers are virtual device drivers. They are used in virtualization environments, for example when an MS-DOS program is run on a Microsoft Windows computer or when a guest operating system is run inside eg. VMware. Instead of enabling the guest operating system to dialog with hardware, virtual device drivers take the opposite role and emulate a piece of hardware, so that the guest operating system and its drivers running inside a virtual machine can have the illusion of accessing real hardware. Attempts by the guest operating system to access the hardware are routed to the virtual device driver in the host operating system as eg. function calls. The virtual device driver can also send simulated processor-level events like interrupts into the virtual machine.
Open drivers
See also
External links
- Links to drivers, manuals and infos about products on DriversPlanet.com
- Free drivers on DriverGuide
- A discussion of drivers' future
- Linux Device Drivers
- Rare and Popular Hardware Drivers Download
- Microsoft Windows Hardware and Driver Central
- Linux Device Driver Basicscs:Ovladač
da:Hardwaredriver de:Gerätetreiber es:Controlador de dispositivo fr:Pilote (informatique) he:מנהל התקן lt:Draiveris nl:Stuurprogramma ja:デバイスドライバ pl:Sterownik urządzenia pt:Driver de dispositivo ro:Driver ru:Драйвер sv:Drivrutin uk:Драйвер zh:驱动程序