An hardware abstraction layer is a layer between the physical hardware of a computer and the software that runs on that computer. The function is to hide differences in hardware and therefore provide a consistent platform to run applications on.

The best example of an HAL can be found in the AS/400 architecture. The implementation of the LIC or Lincensed Internal Code, was so succesfull that software written on the predecessor, the S/38, runs without modifications on an AS/400. The underlying hardware has changed dramatically, at least 3 different types of processors have been in use.

BSD, Linux and the Windows NT based operating systems, also have an HAL. These operating systems have different subsystems for particular functions e.g. sound and vision.