What Does Device Driver Mean?
A device driver is a particular form of software application that allows one hardware device (such as a personal computer) to interact with another hardware device (such as a printer). A device driver may also be called a software driver.
Drivers facilitate communication between an operating system and a peripheral hardware device. Each driver contains knowledge about a particular hardware device or software interface that other programs — including the underlying operating system (OS) — does not have.
In the past, device drivers were written for specific operating systems and specific hardware peripherals. If a peripheral device was not recognized by their computer's OS, the end user had to locate and manually install the right driver.
Today, most operating systems include a library of plug-n-play drivers that allows peripheral hardware to connect automatically with an operating system. This approach also has the advantage of allowing programmers to write high-level application code without needing to know what hardware their code will run on.
Techopedia Explains Device Driver
Essentially, a driver acts as a translator between a computing device's operating system (OS) and peripheral hardware.
How Device Drivers Work
A device driver usually communicates with the hardware by means of the communications subsystem (the computer bus) to which the hardware is connected. It is essential that a computer have the correct device drivers for all its parts to keep the system running efficiently. When first turning on a computer, the OS works with device drivers and the basic input/output system (BIOS) to perform hardware tasks. Without a device driver, the OS would not be able to communicate with the I/O device.
There are various types of device drivers for I/O devices such as keyboards, mice, CD/DVD drives, controllers, printers, graphics cards and ports. When a driver is included in an operating system, it may be referred to as a kernel-mode device driver. If the end user has to download and install a driver manually, it may be characterized as being a user-mode device driver.
Device Driver vs. API
Today, software developers can use application programming interfaces (APIs) to provide their applications with access to OS functions and logic an application needs to run.
For example, developers working on applications with machine learning (ML) and artificial intelligence (AI) programming can use APIs to avoid having to worry about low-level commands for every graphics processing unit (GPU) their app is expected to run on.
The History of the Device Driver
Technology historians looking at the rise of new technologies like cloud computing and software-as-a-service tend to see the device driver era as pertaining to the 1990s and subsequent years, where hardware setups were still very much a part of computing and consumer technologies.
What they find is that device drivers caused all sorts of problems. For example, a problem called “thread stuck in device driver” had to do with thread programming encountering problems with driver software and crashing computers, generating the feared “blue screen of death” signifying a crash in Windows.
Even as hardware connectivity progressed, for instance, as USB connectors took over from traditional pin connectors, driver software issues persisted. News from the era shows users running from certain kinds of technologies that required driver installation, for example, peripherals or certain types of GPUs or network expansion cards.
Many of the problems of device driver software have to do with the privileges and permissions required to accommodate the input/output compatibility or allow hardware pieces to “talk to one another.
Virtual Device Drivers
As hardware virtualization emerged, engineers created virtual device drivers (VxD), which are device driver components that enable direct communication between a virtual hardware device and an application. Virtual device drivers help to manage the data flow to enable multiple applications to access the same hardware without a conflict. When there is an interrupt (a signal from a hardware device), the virtual device driver configures the next instruction step based on the status of the hardware device settings.
For example, a virtual machine driver in a virtualization setup will work with IP and MAC addressing to emulate a network connection for a virtual machine. A philosophical question attached to the rise of the virtual device driver is whether it's inherently necessary to have virtualized driver software for virtual devices, or whether different connectivity could bypass this traditional aspect of computing architectures.
Case in point: the emergence of cloud computing systems. By sourcing jobs traditionally allocated to hardware through the Internet, the cloud eliminates the need for many various different kinds of device drivers, or abstracts them on the vendor side. That means modern users will not be as familiar with the device driver as others had been in the past. Since all of the functionality is handled by the browser, there is no need to create compatibilities in a system that is inherently universal or composed of one computing stream.
However, the device driver still works as a core concept in complex computing. To the extent that these systems are needed in an operating system environment, the device driver is still relevant in the cloud era.