Capa de abstracción de hardware
# Capa de abstracción de hardware

La capa de abstracción de hardware (en inglés, Hardware Abstraction Layer o HAL) es un elemento del sistema operativo que funciona como una interfaz entre el software y el hardware del sistema, proveyendo una plataforma de hardware consistente sobre la cual corren las aplicaciones. Cuando se emplea una HAL, las aplicaciones no acceden directamente al hardware sino que lo hacen a la capa abstracta provista por la HAL. Del mismo modo que las API, las HAL permiten que las aplicaciones sean independientes del hardware porque abstraen información acerca de tales sistemas, como lo son las cachés, los buses de E/S y las interrupciones, y usan estos datos para darle al software una forma de interactuar con los requerimientos específicos del hardware sobre el que deba correr.

El sistema operativo NT tiene un HAL que permite la portabilidad del código de modo núcleo de Windows NT a una variedad de procesadores con distintas arquitecturas de administración de memoria, y una variedad de sistemas con diferentes arquitecturas de bus E/S. La mayor parte de este código se ejecuta sin cambio en estos sistemas.

Sistemas operativos como BSD, Mac Os X, GNU/Linux, CP/M, DOS, Solaris y otros tienen también una HAL, aunque no siempre esté específicamente designada de tal forma. Las HAL son de un nivel incluso inferior en lenguajes de programación que las interfaces de aplicación de programas (API), porque interactúan directamente con el hardware en vez de con el sistema kernel, por lo que requieren menos tiempo de procesamiento que las API. Los lenguajes de alto nivel suelen usar HALs o API para comunicarse con componentes de menor nivel.

Con HAL, toda la información sobre los tipos de hardware es accesible en un único formato. Cuando un nuevo dispositivo es añadido al sistema, una señal asíncrona es situada en el bus del sistema de mensajes detallando el tipo de dispositivo que ha sido añadido. Scripts del sistema pueden configurar el dispositivo, es decir, HAL soporta dispositivos plug and play.

