1.5 Device drivers
A device driver or software driver is a computer program allowing higher-level computer programs (an application) to interact with a hardware device. A driver typically communicates with the device through the computer bus or communications subsystem to which the hardware is connected. When a calling program invokes a routine in the driver, the driver will issue commands to the device. Once the device sends data back to the driver, the driver may invoke routines in the original calling program. Drivers are hardware-dependent and operating-system-specific. 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 devices such as 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
• Choosing and installing the correct device drivers for a given hardware is often a key component
  of computer system configuration.