driver access

How do Hardware Drivers Work

While many of us have downloaded, applied, or installed drivers at some point in our time using computers, it seems that often their function and method of action are taken for granted and or are well understood. Most people are aware of the distinct separation between software and hardware; to sum it up in what is perhaps an oversimplified manner, the software makes a request as a result of user input, and the hardware performs the processes needed to fulfill that request. For example, a text editing program needs a place to store all of the information being entered, so it sends the data to the computer's RAM and tells it to hold onto it. A graphing calculator program uses the CPU to crunch the numbers of a complex mathematical equation down into the problem's final solution.

There is a missing link in this chain, however; computer software is written for a certain operating system rather than a certain type of hardware. That is to say, a program which has been written and compiled for a Windows system will not run on a Mac or Linux system without very significant modification. Conversely, any program that has been written to work on a certain version of Windows such as Windows XP is designed so that regardless of the user's hardware, as long as the software environment they are running is consistent there will be no compatibility problems. Drivers serve to provide an interface between the hardware and software layers, creating a unique profile for each user based on their particular system configuration.

As another example, let's consider a common case of a user's software being unable to properly take advantage of the hardware which it's running on. When installing a fresh copy of Windows on a given computer, one of the most common disconnects that occurs is in its ability to properly display information on the monitor being used. Since graphics drivers are often quite large files and also very frequently updated, they are usually the least likely to be found bundled in with the operating system's driver collection. If the correct drivers are not installed, the screen resolution will be exceedingly low and any attempt to run a demanding 3d game will result in either an extremely low frame rate or a complete failure to launch. The game itself knows what it needs out of the hardware and makes requests, but since the correct drivers are not installed, Windows doesn't know how to properly "route" the requests.

Most of the time, drivers are written by the manufacturers of the actual hardware being written for. Computer hardware is complex by its very nature, and ever increasingly so; to write a driver which will correctly operate under all circumstances requires extremely detailed knowledge of the way in which the hardware operates. Quality control is exceedingly important, as errors in their programming will cause serious problems in flawlessly written software. It is possible to reverse-engineer a piece of hardware so that accurate drivers can be written, but this process is quite difficult and more susceptible to error. Having the "blueprint" of the hardware ensures no room for mistakes, so long as it is accurately followed.

While you or I may never be in a position in which we are responsible for the production of drivers, it is still useful to understand the way they operate. Familiarizing one's self with the principles behind their activity can assist one in troubleshooting general computer problems, as understanding one part of the system and how it interacts with other parts helps us to get a clearer picture of the system as a whole.