Hardware Abstraction Layer

From OSDev Wiki
Jump to navigation Jump to search

This article is a stub! This page or section is a stub. You can help the wiki by accurately contributing to it.

Hardware Abstraction Layer

A "Hardware Abstraction Layer" or HAL is an abstraction of the actual hardware, so as to present a consistent interface to software even if the underlying hardware alters or different models of the same device class vary a great deal in their implementation and actual interface. A HAL allows programmers to write device drivers in a consistent and largely model / brand agnostic manner, it might even isolate the kernel from much of the installed hardware. Operating systems which make use of a HAL will rarely, if ever, permit user-level software to interface directly with hardware devices and usually will not allow device drivers (which frequently run with privileges) to do so either. Device Driver Interfaces are one of the most important compoments in HAL.

Usage Example

  • A cash register program wants to read name of product just processed by cash register.
  • It calls cash register driver to do so, and cash register driver calls Device Driver Interface.
  • Then, Operating System Device Driver Interface, for example, it communicates with cash register using PCI.
  • And at the last, Device Driver Interface passes product name from cash register to driver which passes product name to the program.