Capa de abstracción de hardware

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 9 de julio de 2021; las comprobaciones requieren 5 ediciones .

La capa de abstracción de hardware (HAL, Hardware Abstraction Layer ) es una capa de abstracción implementada en software, ubicada entre la capa de hardware físico y el software que se ejecuta en esta computadora. HAL está diseñado para ocultar las diferencias de hardware de la parte principal del kernel del sistema operativo , de modo que gran parte del código que se ejecuta en modo kernel no necesita cambiarse cuando se ejecuta en sistemas con hardware diferente.

En las computadoras personales, HAL se puede considerar esencialmente como un controlador de placa base , que permite que las instrucciones de los lenguajes de programación de alto nivel interactúen con componentes de bajo nivel, como el hardware.

En los sistemas operativos de la familia Windows NT , HAL es una parte integral del código que se ejecuta en modo kernel y se ubica en un módulo de arranque separado que se carga con el kernel. [1] [2] Esto hace posible usar el mismo cargador de kernel nativo de Windows NT en varios sistemas con diferentes arquitecturas de E/S, interrupción y temporizador.

Por ejemplo, las estaciones de trabajo basadas en SGI Intel x86 no eran compatibles con las estaciones de trabajo compatibles con IBM PC , pero gracias a HAL, Windows NT podía ejecutarse en ellas. De manera similar, el mismo kernel de Windows NT se usa en los sistemas modernos con un controlador de interrupción APIC y en los sistemas heredados sin soporte APIC.

Windows Vista y versiones posteriores ( Windows Server 2008 y versiones posteriores para servidores) detectan automáticamente qué nivel HAL debe usarse en el momento del arranque. [3]

BSD , Mac OS X , Linux , Solaris , CP/M , MS-DOS y algunos otros sistemas operativos portátiles también tienen una HAL, aunque no se diseñó explícitamente para realizar las funciones descritas anteriormente. Algunos sistemas, como Linux, tienen la capacidad de insertar una capa similar, como Adeos, mientras trabajo. El kernel del sistema operativo NetBSD es ampliamente conocido por tener una capa de abstracción de hardware (HAL) limpia, lo que le permite ser altamente portátil . Parte de este sistema son uvm(9)/ pmap(9), bus_space(9), bus_dma(9)y otros subsistemas. Los buses populares que se usan en más de una arquitectura, como ISA , EISA , PCI , PCI-E y otras, también se abstraen, lo que permite que los controladores escritos para ellos también sean altamente portátiles con cambios mínimos de código.

Se puede encontrar un ejemplo "extremo" de HAL en las arquitecturas System/38y AS/400 . La mayoría de los compiladores de tales sistemas generan código de máquina abstracto . El código interno con licencia (LIC) traduce este código de máquina virtual al código interno (nativo) del procesador en el que se ejecuta y ejecuta el código interno resultante (con la excepción de los compiladores que generan LIC por sí mismos; estos compiladores no están disponibles fuera de IBM ) .

Por ejemplo, el software de aplicación y el software del sistema operativo por encima de la capa LIC compilados en la arquitectura System/38 original se ejecutan sin modificación ni recompilación en los sistemas AS/400 más recientes. Esto es a pesar del hecho de que el hardware subyacente ha cambiado drásticamente; estaban en uso al menos tres tipos diferentes de microprocesadores . [cuatro]

HAL tiene un nivel inferior en los lenguajes de programación de computadoras que API porque interactúa directamente con el hardware en lugar del kernel del sistema , por lo que HAL requiere menos tiempo de CPU que API. Los lenguajes de alto nivel a menudo usan HAL y API para interactuar con componentes de nivel inferior.

Los sistemas operativos que tienen una HAL se transfieren fácilmente a varios hardware. Esto es especialmente importante para los sistemas integrados , que deben ejecutarse en una gran cantidad de plataformas diferentes.

Véase también

Notas

  1. Capa de abstracción de hardware (HAL) de Windows NT . Microsoft (31 de octubre de 2006). Consultado el 25 de agosto de 2007. Archivado desde el original el 3 de marzo de 2012.
  2. Helen Custer (1993), Dentro de Windows NT , Microsoft Press 
  3. Rusinovich, Mark. MI.; Salomón, David A.; Ionescu, Alex. Windows Internals : incluidos Windows Server 2008 y Windows Vista  . — 5to. — Redmond, Washington: Microsoft Press, 2008. - Pág. 65. - ISBN 978-0-7356-2530-3 .
  4. Soltis, Frank G. Inside the AS/400 : Presentación de la serie AS/400e  . — 2do. — Loveland, Colorado: Duke Press, 1997. — ISBN 978-1-882419-66-1 .