You are on page 1of 6

A REPORT ON

DEVICE DRIVERS

Submitted
by:
Rakesh
Krishnan
Mtech DEAC
100915020
Device driver

A device driver is a program that a computer's operating system


uses to control a particular hardware device that is attached to
a computer. Devices can range from the display and hard disk drive,
to sound cards and video cards. Most operating systems contain
device drivers that are built-in, but they can also be installed when a
new device is added to the system.
A device driver or software driver is a computer program allowing
higher-level computer programs to interact with a hardware device.
A driver typically communicates with the device through
the computer bus or communications subsystem to which the
hardware connects. When a calling program invokes a routine in the
driver, the driver issues 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. They usually provide
the interrupt handling required for any necessary asynchronous
time-dependent hardware interface.

Functions

A device driver processes the request of an application and then


sends the instruction to the hardware device to produce the output.
This is how the display information is sent from the operating
system to the display or monitor. A device driver typically has a
configuration interface that can be accessed so that the user can
make adjustments to the hardware device.

A device driver simplifies programming by acting as translator


between a hardware device and the applications or operating
systems that use it. Programmers can write the higher-level
application code independently of whatever specific hardware
device.

Design

Device drivers can be abstracted into logical and physical layers.


Logical layers process data for a class of devices such
as Ethernet ports or disk drives. Physical layers communicate with
specific device instances. For example, a serial port needs to handle
standard communication protocols such as XON/XOFF that are
common for all serial port hardware. This would be managed by a
serial port logical layer. However, the physical layer needs to
communicate with a particular serial port chip. 16550
UART hardware differs from PL-011. The physical layer addresses
these chip-specific variations. Conventionally, OS requests go to the
logical layer first. In turn, the logical layer calls upon the physical
layer to implement OS requests in terms understandable by the
hardware. Inversely, when a hardware device needs to respond to
the OS, it uses the physical layer to speak to the logical layer.

In Linux environments, programmers can build device drivers either


as parts of the kernel or separately as
loadable modules. Makedev includes a list of the devices in Linux:
ttyS (terminal), lp (parallel port), hd (disk), loop (loopback disk
device), sound (these include mixer, sequencer, dsp, and audio)

The Microsoft Windows .sys files and Linux .ko modules contain
loadable device drivers. The advantage of loadable device drivers is
that they can be loaded only when necessary and then unloaded,
thus saving kernel memory.

Development

Writing a device driver requires an in-depth understanding of how


the hardware and the software of a given platform function. Drivers
operate in a highly privileged environment and can cause disaster if
they get things wrong. In contrast, most user-level software on
modern operating systems can be stopped without greatly affecting
the rest of the system. Even drivers executing in user mode can
crash a system if the device is erroneously programmed. These
factors make it more difficult and dangerous to diagnose problems.

Thus the task of writing drivers usually falls to software


engineers who work for hardware-development companies. This is
because they have better information than most outsiders about the
design of their hardware. Moreover, it was traditionally considered
in the hardware manufacturer's interest to guarantee that their
clients can use their hardware in an optimum way. Typically,
the logical device driver (LDD) is written by the operating system
vendor, while the physical device driver (PDD) is implemented by
the device vendor. But in recent years non-vendors have written
numerous device drivers, mainly for use with free and open
source operating systems. In such cases, it is important that the
hardware manufacturer provides information on how the device
communicates. Although this information can instead be learned
by reverse engineering, this is much more difficult with hardware
than it is with software.

Microsoft has attempted to reduce system instability due to poorly


written device drivers by creating a new framework for driver
development, called Windows Driver Foundation (WDF). This
includesUser-Mode Driver Framework (UMDF) that encourages
development of certain types of drivers — primarily those that
implement a message-based protocol for communicating with their
devices — as user mode drivers. If such drivers malfunction, they do
not cause system instability. The Kernel-Mode Driver
Framework (KMDF) model continues to allow development of kernel-
mode device drivers, but attempts to provide standard
implementations of functions that are well known to cause
problems, including cancellation of I/O operations, power
management, and plug and play device support.

Apple has an open-source framework for developing drivers on Mac


OS X called the I/O Kit.

Kernel-mode vs user-mode

Device drivers, particularly on modern Windows platforms, can run


in kernel-mode (Ring 0) or in user-mode (Ring 3). The primary
benefit of running a driver in user mode is improved stability, since
a poorly written user mode device driver cannot crash the system
by overwriting kernel memory.[4] On the other hand, user/kernel-
mode transitions usually impose a considerable performance
overhead, thereby prohibiting user mode-drivers for low latency and
high throughput requirements.

Kernel space can be accessed by user module only through the use
of system calls. End user programs like the UNIX shell or other GUI
based applications are part of the user space. These applications
interact with hardware through kernel supported functions.

Applications

Because of the diversity of modern hardware and operating


systems, drivers operate in many different environments. Drivers
may interface with:

 printers

 video adapters

 network cards

Virtual device drivers


Virtual device drivers represent a particular variant of device
drivers. They are used to emulate a hardware device, particularly
in virtualization environments, for example when a DOS program is
run on aMicrosoft Windows computer or when a guest operating
system is run on, for example, a Xen host. Instead of enabling the
guest operating system to dialog with hardware, virtual device
drivers take the opposite role and emulate a piece of hardware, so
that the guest operating system and its drivers running inside
a virtual machine can have the illusion of accessing real hardware.
Attempts by the guest operating system to access the hardware are
routed to the virtual device driver in the host operating system as
e.g. function calls. The virtual device driver can also send simulated
processor-level events like interrupts into the virtual machine.

Identifiers

 Device id is the device identifier and Vendor id is the vendor


identifier.

Installation

A device driver is typically installed when the installation CD for a


new hardware device is used to run the setup program. The
installation CD contains the device drivers as well as any additional
software applications that are needed to use the new hardware
device. A device driver will stay on the system until it is removed or
uninstalled.

Updating

Device drivers can be updated on a system using a variety of


methods. Typically, a device driver can be downloaded from the
manufacturer if an update is available. Many times a manufacturer
will update a device driver to add additional functionality or to fix a
bug in the program. A device driver can also be updated by
installing updates to the operating system or running the setup
program from a device's installation CD.

Conflicts

Sometimes a device driver can conflict with other components on a


system. The Device Manager in Windows can be used to see if there
is any sort of conflict with an installed device. Conflicts can usually
be resolved by repairing corrupt files or removing a device and
attempting to reinstall it on the system.
File Types

A device driver can have a file type of DLL or EXE depending on


what type or program is being used. Many software programs that
communicate with a device use a combination of DLL and EXE files
in order for the device to function properly. An example of this
would be a TV Tuner card. Software needs to be installed to display
the video on the screen or send audio to the speakers.