Hardware Abstraction Layer

The Hardware Abstraction Layer (HAL) is a thin layer of software provided by the hardware manufacturer that hides, or abstracts, hardware differences from higher layers of the operating system. Thus, through the filter provided by HAL, different types of hardware all look alike to the operating system, removing the need to specifically tailor the operating system to the hardware with which it communicates.

The goal for HAL was to provide routines that allow a single device driver to support the same device on all platforms. HAL allows a large number of variations in hardware platforms for a single processor architecture without requiring a separate version of the operating system for each one.

HAL routines are called from both the base operating system (including the Kernel component) and from device drivers. For drivers, HAL provides the ability to support a wide variety of input/output (I/O) architectures, instead of either being restricted to a single hardware model or needing extensive adaptation for each new hardware platform.

HAL is also responsible for hiding the details of symmetric multiprocessing hardware from the rest of the operating system.