In This Article
What is Driver?
- The main objective of a device driver is to fetch the addresses mapped on the memory resource and ports or to provide abstraction. It functions through the PCI bus.
- There are two main categories of computer drivers namely device drivers and software drivers but there are also several others such as open source drivers, virtual device drivers, character device drivers, block device drivers, hardware bus drivers, kernel mode and user mode drivers.
- These drivers usually issue commands when the calling program calls upon a routine in it. The data is sent back to the driver to call upon the routine in the calling program.
Understanding Device Driver
A device driver in a computer is very important in computing because this program helps in the operation and control of a specific type of hardware peripheral device that is attached to the computer.
The driver in a computer provides the hardware devices with a software interface.
This enables the operating systems and other programs installed in the computer to access hardware functions.
For this, they do not need to know the details of the hardware devices that are being used.
Typically, the driver of the computer uses the bus of the system or the communications subsystem that connects the specific hardware in order to communicate with them.
The drivers in the computer are typically operating system specific and are heavily dependent on the hardware.
Since these drivers are a special kind of software application that helps the hardware devices to interact with each other, these are also called software drivers.
In the earlier days, these drivers were designed for specific operating systems and hardware peripherals.
This means that, if the operating system of the computer could not recognize the particular peripheral device it is supposed to, the users needed to locate the right kind of driver and install it manually.
However, over time, with the development in technology and its design, there is a library of Plug and Play drivers included in most of the operating systems.
This helps the peripheral hardware devices to automatically connect with that particular operating system.
This approach offered several advantages and one of the most significant one of them all is that it helped the programmers in writing high-level application codes significantly.
This is because they do not need to know on which particular type of hardware device the application code will run on.
The driver or the low-level code or program typically functions as the translator that facilitates the operating system of the computer to ask the software or hardware to do exactly what a user wants them to do.
Therefore, every computer comes equipped with several drivers or you may need to install them to control the different hardware components attached to the computer system or the different apps installed in it.
Without the drivers installed, the softer and hardware of the computer will not function as it should be, and in some specific cases these may not work at all.
You will, therefore, need to manage the drivers in your computer as well. It is a good practice to look for the driver updates released off and on to fix any bug or get a new feature.
Usually these updates are offered by the manufacturer for free and available on their official website.
Device driver management can be done easily on a Windows system through the Device Manager.
Functions of a Driver in a Computer
As already mentioned, a computer driver refers to the set of files that tells how exactly a piece of hardware should function.
The main function of the driver is to help the hardware devices and the operating system of the computer to communicate with each other.
The driver files are specially programmed to work seamlessly with the particular operating system loaded in your computer.
These files help in keeping everything updated and to ensure that everything functions properly.
A driver facilitates communication because it has the correct knowledge about a specific software program or a hardware device that the other programs, including the operating system underlying them, do not have.
For example, when the Print button is pressed in an application, this command is sent by the operating system to the printer driver, which will actually print the document.
However, before sending the command to the printer driver, the computer driver will translate it so that the printer driver understands exactly what it is required to do.
The document will be printed finally by the printer driver to complete your request.
It is the operating system of the computer that actually helps in fulfilling the commands and requests sent by you because it knows how exactly it should ask the devices to do the needful. And, this is facilitated by the drivers in the computer.
The drivers typically function through the Peripheral Component Interconnect or PCI bus which connects the devices.
The function of a driver is to obtain addresses that are typically mapped to the memory resources on the device and the port.
The function driver writes to those particular addresses in order to communicate directly with the device.
However, there may be several cases wherein the device may not be directly connected to the PCI bus but via a host bus adapter or the host controller, which is connected to the PCI bus.
Since both the device as well as the host controller have their individual drivers, they can communicate indirectly as well.
The driver of the host controller may then communicate with the driver of the hardware.
Need for a Driver in a Computer
Ideally, in absence of a driver, the computer will not be able to send or receive data to and from the hardware devices attached to it, such as a printer.
Therefore, it can be said that the primary purpose of the drivers in a computer is to provide abstraction.
This means that without the drivers in the computer you will not be able to use the system since there will be no communication with the software, the hardware and other devices.
Since they will not be able to work together, it will render your computer useless.
It is the drivers that will manipulate the communication between the devices in different formats which is understandable by the devices.
Most importantly, the hardware devices that are not known or those that come with features that are not known to the operating system typically need drivers.
At times, when a device works well without a driver but you cannot use all the features that it comes with, such as an additional button in a keyboard or a mouse, it might need a driver to make sure that those extra buttons work properly.
Also, in the case of Microsoft Windows in particular, the missing drivers and users may cause a conflict in the drivers.
This might also result in an error in the Device Manager.
This however can be resolved easily by installing driver updates in order to replace the current driver code.
A driver helps the local buses of any sort in bus mastering on the modern computer systems just as it helps the low-bandwidth I/O buses of different kinds along other buses such as:
- Floppy disk buses
- ATA or Advanced Technology Attachment
- SATA or Serial Advanced Technology Attachment
- SCSI or Small Computer System Interface and
- SAS or Serial Attached Small Computer System Interface.
Apart from that, drivers are also needed to implement support for various types of file systems.
The IrDA adapters, digital terrestrial television tuners and radio frequency communication transceiver adapters also need drivers when used in Wireless Personal Area Network or WPAN for low-rate and short-distance wireless communication.
These are typically used in home automation such as:
- Z Wave
- ZigBee and
- Bluetooth Low Energy or BLE.
Add to that, there are quite a few general levels of abstractions for device drivers, both for the hardware and software.
As for the hardware it includes:
- Direct interfacing
- Reading and writing from the device control register
- Using Video Basic Input Output System or Video BIOS and other high-level interface
- Using a driver of some other lower-level device and
- Simulating work with the hardware while doing something that is completely different.
As for software, the lower level abstractions include:
- Allowing direct access to the operating system and hardware resources
- Implementing an interface for TWAIN or Technology Without An Interesting Name and other non-driver software
- Incorporating only primitives and
- Using a language which may be of quite high level at times such as PostScript.
Therefore, with all these diverse needs and functionalities, it is needless to say that a drive is extremely useful for a computer to function properly in all given respects and contexts.
In short, the drivers in the computers make the system faster and more capable by taking the full advantages of the different devices attached to the system.
Devices that Need and Do Not Need Drivers:
Different devices in a computer need drivers to function properly and some of the most common ones are:
- Digital cameras
- Video adapters
- Card readers
- Sound cards
- Video cards
- Motherboard chipsets
- Network interface cards
- CD-ROM or Compact Disc Read Only Memory
- Hard Disk Drive and Solid State Drive storages devices
- Tape drive and
- USB or Universal Serial Bus devices.
However, not all types of devices used in a computer need a driver.
This is because the operating systems today themselves are equipped with generic drivers that eliminate the need for a driver or software by hardware to work at the basic level.
A few of such devices that do not need a driver to function are:
- Disc drive
- Hard drive
- Heat sink
- Central Processing unit
- Power supply
- UPS and
- Thumb drive.
Usually, the devices that may not need a driver always require the operating system to identify them to function.
Types of Drivers in a Computer
Actually, the drivers of a computer can be divided into two broad categories such as:
- Device drivers and
- Software drivers.
The device drivers are special types of software that helps in establishing a communication between the operating system and the hardware device.
Usually, these drivers are created by the same manufacturer of the device.
However, there are also third-party device drivers available which are created on the basis of the hardware standard published.
All device drivers may not be designed to communicate with the device itself directly.
In some cases these drivers may be layered in a stack which allows communicating directly to the operating system or one another.
The drivers that communicate directly with the operating system or the device itself are known as the function drivers.
Software drivers, just as the name signifies, are not related with any type of hardware devices which is unlike the device drivers.
Rather, these are specific programs that are used by different software applications for communicating with the operating systems.
The main function of the software drivers is to allow or disallow access to protected data that are obtainable only to the programs in the kernel mode.
It is for this reason you will find that the software drivers typically run in the kernel mode.
The device driver typically issues commands while a calling program calls upon a routine in the driver.
This drives the device. And, when the device returns data back to the driver, it invokes the routines in the actual calling program.
That is how the drivers in a computer work, in simple words.
Technically speaking, the device drivers make the interrupt handling available that is necessary for any asynchronous hardware interface, which is typically time dependent.
The device driver normally uses the computer bus or the communication subsystem of the particular hardware it is linked to in order to communicate with it.
The operating system works with both the BIOS of the system as well as the device drivers in order to carry out any particular hardware tasks when you turn on your computer.
Usually, the device drivers in a computer work in the kernel layer of the operating system.
This is because the kernel is that particular part of the operating system that interacts directly with the physical structure.
The device drivers are loaded by the operating system instead of directly accessing the device.
It then calls for the exact functions in the software of the driver in order to carry out the specified tasks on the device.
Every driver in the computer usually contains the codes specific for the device that is essential to execute any action on it.
However, the functioning of the device drivers normally depends on the instructions sent by the operating system related to accessing the device and performing a specific function.
When the particular action is completed, the drivers also explain their response by conveying a status message or output to the operating system from the hardware device.
Take an example of taking out a print of a document from your computer.
When you give the Print command, the driver of the printer tells it the specific format in which it has to print the document as and when it receives the instruction from the operating system.
Technically, when a printer is connected to a computer and the appropriate driver is installed, it creates a device object on the computer.
This device object is created basically to control the device and it also signifies the device as well as its physical structure modes.
Both these allow the operating system of the computer to handle its functions.
When you give the Print command, this travels to the device driver from the printer via the kernel of the operating system.
As a result, the calling program summons a routine in the device driver.
The device driver then issues the subsequent instructions to the microcontrollers in the printer.
These microcontrollers further control the other parts in the printer such as the motors to begin printing the document according to your command.
How Many Drivers are There in a Computer?
Apart from the two major types of drivers mentioned above, you will also find other types of drivers in a computer that may be a sub-part of the device drive or a software driver.
Virtual Device Drivers:
These drivers are a special variant of device drivers and are designed to emulate a hardware device especially in virtualization environments such as:
- When running a Disk Operating System or DOS program on a Microsoft Windows computer and
- When running a guest operating system a different host.
These drivers do not enable the guest operating system for communicating with the hardware but takes the role of emulating the piece of hardware itself.
This creates an illusion in the guest operating system and the drivers that are running in a virtual machine.
They think that they are accessing the actual hardware.
When the guest operating system tries to access the hardware, it is routed to the virtual device driver as function calls in the host operating system.
These drivers can also send simulated events at the processor level such as interrupts to the virtual machine.
There are many types of virtual device drivers such as VxDs, and VLMs.
Open Source Drivers:
There are also different open sources drivers available to use in order to enhance the communication with specific hardware devices such as:
- Graphics device driver
- Printers such as Common UNIX or UNiplexed Information Computing System Printing Systems or CUPS
- RAIDs or Redundant Array Of Independent Disks drivers such as CCISS or Compaq Command Interface for SCSI-3 Support
- Scanner drivers such as Scanner Access Now Easy and
- Video drivers such as Vidix or Video Interface for NIX and DRI or Direct Rendering Infrastructure.
Block Device Drivers:
These are the drivers that are written specifically for the block devices that typically support a file system.
These drivers take up the request of a file system in the form of a buf(9S) structure.
It issues the I/O operations to the disk so that the specific block can be transferred.
Sometimes, these block device drivers may also offer a character driver interface.
This allows direct access by the utility programs to the device by bypassing the file system, which is typically known as the raw interface to a block device.
Character Device Drivers:
These types of drivers typically perform an I/O in a byte stream.
And, they also offer extra interfaces that are found lacking in the block drivers such as:
- Memory mapping
- Device polling and
- I/O control or ioctl commands.
There are also a few other types of drivers such as STREAMS Drivers that offer the auto configuration and loading support and Bus Drivers that offer support to the device tree and the device nodes.
Hardware Bus Drivers:
These drivers are typically system-supplied and normally control the I/O buses that are more dynamically configurable.
These bus drivers typically configure and reconfigure the hardware resources of the system by working with the Plug and Play manager.
These resources can be Interrupt Requests or IRQs and mappings for system memory.
It also does the same to all the child devices connected to the I/O buses controlled by the driver.
Microsoft Windows Drivers
As for the Microsoft Windows drivers, there are two major types with some subdivisions as well, namely, the User Mode and Kernel Mode drivers.
Just as the name suggests, these drivers perform in user mode and typically provide an interface between the kernel mode drivers and a Win32 application or any other components of the operating system.
Kernel Mode Drivers:
These drivers execute in kernel mode which consists of components of the operating system that manage different aspects and functions such as:
- Processes and threads
- Plug and Play memory
- Security and lots more.
These drivers are typically layered where the higher level drivers normally receive the data sent by the applications and filter them before passing them onto the lower level driver.
This lower level driver supports device functionality.
These are those specific kernel mode drivers that match the Windows Driver Model or WDM.
These drivers typically support power management and Plug and Play format.
These are not binary compatible but source compatible across different operating systems such as:
- Windows 98
- Windows Millennium Edition
- Windows 2000 and later.
The kernel mode drivers employ discrete modular mechanisms that come with a set of necessary and well-defined functionalities and supply a set of regular but system-defined driver routines.
Usually, the kernel mode drivers come in three different types in a driver stack namely:
- The highest level kernel mode drivers
- The intermediate level kernel mode drives and
- The lowest level kernel mode drivers.
All these three types of kernel mode drivers may not differ very much in their respective structures but surely differ a lot in their functionalities.
The highest level drivers include FSDs or File System Drivers that supports a range of file systems such as:
These types of drivers however rely on the support provided by the lower level bus drivers underlying for their operation such as the intermediate level function drivers and the lowest level hardware bus drivers.
The intermediate drivers typically depend on the lower level drivers for their operation and include mirror, virtual disk, or device-type-specific class drivers.
These intermediate drivers can be further divided into subdivisions such as:
- Function drivers that control the particular peripheral devices on the I/O bus
- Filter drivers that are located either above or below the function drivers and
- Software bus drivers that offer a set of child devices that the higher level class drivers, function drivers, and filter drivers can attach to.
Ideally, any class driver of the system that can export a system-defined class or mini class interface is considered to be an intermediate driver in effect that is linked with one or more mini class drivers or mini drivers, as they are commonly called.
Typically, these connected class or mini driver pairs offer functionality that is similar to the software bus driver or a function driver.
And, the lowest level drivers that do not depend on any other driver typically control the I/O bus to which the peripheral devices are connected.
For example, the legacy drivers that control a physical device directly are known as the lowest level drivers.
A Few Words about Device Drivers:
Before you install any driver in your computer, it is prudent to check the official website of the manufacturer about its requirements.
Also, check for any available updates because it is wise to have the updated version of the driver for the peripheral device.
This will ensure that things run properly and do not cause any hardware issues or any instability in the operating system.
Finally, make sure that the driver is digitally signed by the manufacturer for its authenticity and compatibility with the particular peripheral device and the operating system.
This can be done in a few easy steps which include:
- Clicking on Start on the main toolbar on the desktop
- Clicking on Run
- Typing ‘sigverif’ in the command prompt and
- Running a scan of all the device drivers installed.
This will keep all your device drivers up to date, which is very important for the proper functioning of the computer system.
Therefore, it is quite clear from the article that the drivers in a computer play a very important role in the functioning of the system overall.
Acting as the translator and as an intermediary between the operating system and the hardware devices, the drivers ensure that every operation runs smoothly.