A driver is software that interfaces between a limited resource and the
A limited resource is something such as a hardware device or memory; in other
words, there is basically only one thing that is used by multiple applications.
For example, two applications cannot use the same physical printer at the same
time; typically, a printer device driver will spool print data to a temporary
location (disk) and then another device driver, such as a parallel port driver,
will send the data to the printer when it is available.
Since a driver is software that the operating system uses, the way it works is
entirely dependent on the operating system.
Another very useful feature of device drivers is that they provide device
independence for applications. In more primitive operating systems, such as DOS,
applications must have a variety of code for a variety of printers. When a DOS
program needs to print something, it must know what the printer is and it must
create the printer control codes to send to the printer. In a more sophisticated
operating system, such as Windows, applications do not need to know what printer
control characters to use; there is a Windows function to do most everything and
the Windows printer device driver for that printer knows what control codes to
send. Another example of device independence is display adapters; a DOS program
must have various programming that depends on the type of display adapter, but a
Windows program just uses GDI functions and the display adapter driver has code
that implements the GDI functions.