A hardware abstraction layer (HAL) is an
abstraction layer, implemented in software, between the physical
hardware of a
computer and the
software that runs on that computer. Its function is to hide differences in hardware from most of the
operating system kernel, so that most of the kernel-mode code does not need to be changed to run on systems with different hardware. On a PC, HAL can basically be considered to be the driver for the motherboard and allows instructions from higher level computer languages to communicate with lower level components, such as directly with hardware.
See more at Wikipedia.org...