Articulo de referencia

abstracción de hardware

Una abstracción de hardware es un software que proporciona acceso al hardware de forma que oculta detalles que, de otro modo, dificultarían su uso. Normalmente, el acceso se pro...

Una abstracción de hardware es un software que proporciona acceso al hardware de forma que oculta detalles que, de otro modo, dificultarían su uso. Normalmente, el acceso se proporciona mediante una interfaz de software que permite acceder a dispositivos con cierto grado de similitud mediante las mismas acciones de software, aunque estos dispositivos ofrezcan interfaces de hardware diferentes. Una abstracción de hardware puede facilitar el desarrollo de aplicaciones multiplataforma .

El software inicial se desarrollaba sin una abstracción de hardware, lo que obligaba al desarrollador a comprender múltiples dispositivos para garantizar la compatibilidad . Con la abstracción de hardware, el software aprovecha esta abstracción para acceder a hardware significativamente diferente a través de la misma interfaz. La abstracción (a menudo implementada en el sistema operativo ) realiza entonces las operaciones específicas del hardware. Esto permite que el software sea compatible con todos los dispositivos compatibles con la abstracción.

Consideremos un joystick , del cual existen numerosas implementaciones físicas. Podría ser accesible mediante una interfaz de programación de aplicaciones (API) que admita operaciones comunes como movimiento, disparo, configuración de sensibilidad, etc., en una variedad de joysticks diferentes. Una abstracción de joystick oculta detalles (por ejemplo, formato de registro, dirección I2C ) para que los programadores que la utilicen no necesiten comprender los detalles de la interfaz física del dispositivo. Esto también permite la reutilización de código, ya que el mismo código puede procesar mensajes estandarizados de cualquier tipo de implementación que proporcione la abstracción del joystick. Por ejemplo, un "empuje hacia adelante" puede provenir de un potenciómetro o de un sensor táctil capacitivo que reconoce gestos de "deslizamiento", siempre que ambos proporcionen una señal relacionada con el "movimiento".

Dado que las limitaciones físicas pueden variar según el hardware, una API poco puede hacer para ocultarlo, salvo asumir un modelo de "mínimo común denominador". Por lo tanto, ciertas decisiones arquitectónicas profundas de la implementación pueden resultar relevantes para los usuarios de una instancia particular de una abstracción.

Una buena metáfora es la abstracción del transporte. Tanto andar en bicicleta como conducir un automóvil son medios de transporte. Ambos comparten características (por ejemplo, la necesidad de dirigirlos) y presentan diferencias físicas (por ejemplo, la fuente de energía). Siempre se puede especificar la abstracción "conducir a" y dejar que quien implemente el sistema decida si es mejor usar la bicicleta o conducir un automóvil. La función de "transporte terrestre con ruedas" se abstrae y los detalles de "cómo conducir" se encapsulan.

Programación

Un lenguaje de programación de alto nivel proporciona abstracción de hardware al permitir que un programador escriba un algoritmo sin utilizar instrucciones exclusivas de la unidad central de procesamiento (CPU) o su arquitectura de conjunto de instrucciones (ISA) , es decir, las operaciones primitivas de la CPU. Por ejemplo, un compilador genera las instrucciones específicas de la CPU para una ISA determinada. De esta forma, el código fuente puede ser compatible con múltiples plataformas.

capa de abstracción de hardware

Una capa de abstracción de hardware (HAL, por sus siglas en inglés) es una capa de abstracción , implementada en software, que se sitúa entre el hardware físico de un ordenador y el software que se ejecuta en él. Su función es ocultar las diferencias de hardware a la mayor parte del núcleo del sistema operativo , de modo que no sea necesario modificar la mayor parte del código del núcleo para que funcione en sistemas con hardware diferente. En Microsoft Windows, la HAL puede considerarse básicamente como el controlador de la placa base y permite que las instrucciones de lenguajes de programación de alto nivel se comuniquen con los componentes de bajo nivel, pero impide el acceso directo al hardware.

CP/M ( CP/M BIOS ), DOS ( DOS BIOS ), Solaris , Linux , BSD , macOS y algunos otros sistemas operativos portátiles también tienen una HAL, aunque no esté explícitamente designada como tal. Algunos sistemas operativos, como Linux, tienen la capacidad de insertar una mientras se ejecutan, como Adeos. El sistema operativo NetBSD es ampliamente conocido por tener una capa de abstracción de hardware limpia que le permite ser altamente portable. [ 1 ] Como parte de este sistema están 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 también están abstraídos, como ISA , EISA , PCI , PCIe , etc., lo que permite que los controladores también sean altamente portables con una mínima modificación de código.

Los sistemas operativos que cuentan con una capa de abstracción de hardware (HAL) definida son más fáciles de transferir entre diferentes plataformas de hardware. Esto es especialmente importante para los sistemas embebidos que se ejecutan en docenas de plataformas diferentes.

En una pila de software, la capa de abstracción de hardware (HAL) se encuentra debajo de la interfaz de programación de aplicaciones (API), mientras que la capa de aplicación (a menudo escrita en un lenguaje de alto nivel) se encuentra por encima de la API y se comunica con el hardware mediante la llamada a funciones de la API.

Microsoft Windows

La capa de abstracción de hardware en la arquitectura de Windows NT

El núcleo de Windows NT tiene una HAL en el espacio del núcleo entre el hardware y los servicios ejecutivos que se encuentran en el archivo [ 2 ] [ 3 ] en . Esto permite la portabilidad del código del modo núcleo de Windows NT a una variedad de procesadores, con diferentes arquitecturas de unidad de administración de memoria , y una variedad de sistemas con diferentes arquitecturas de bus de E/S; la mayor parte de ese código se ejecuta sin cambios en esos sistemas, cuando se compila para el conjunto de instrucciones aplicable a esos sistemas. Por ejemplo, las estaciones de trabajo SGI Intel x86 no eran estaciones de trabajo compatibles con IBM PC , pero debido a la HAL, Windows 2000 se ejecutaba en ellas. [ 4 ] Desde Windows Vista y Windows Server 2008 , la HAL utilizada se determina automáticamente durante el arranque ; de ​​hecho, desde Windows Vista , Windows NT solo permite HAL basadas en ACPI . [ 5 ]ntoskrnl.exehal.dll

Windows CE también tiene una HAL llamada OEM Adaptation Layer (OAL), que se compila en oal.exeo oal.dll, y se incluye en la nk.binimagen de arranque.

En Windows 9x , tanto el kernel real como el HAL real son vmm32.vxd.

AS/400

Un ejemplo extremo de una capa de abstracción de hardware (HAL) se encuentra en las arquitecturas System/38 y AS/400 , implementadas actualmente en el sistema operativo IBM i . La mayoría de los compiladores para estos sistemas generan un código máquina abstracto; el Código Interno Licenciado (LIC) traduce este código máquina virtual a código nativo para el procesador en el que se ejecuta y ejecuta el código nativo resultante. [ 6 ] (Las excepciones son los compiladores que generan el LIC por sí mismos; estos compiladores no están disponibles fuera de IBM). Esto tuvo tanto éxito que el software de aplicación y el software del sistema operativo por encima de la capa LIC, compilados en el S/38 original, se ejecutan sin modificaciones ni recompilación en los sistemas AS/400 más recientes, a pesar de que el hardware subyacente ha cambiado drásticamente; se han utilizado al menos tres tipos diferentes de procesadores. [ 6 ]

Androide

Android introdujo una capa de abstracción de hardware (HAL) conocida como "interfaz de proveedor" (nombre en clave "Proyecto Treble") en la versión 8.0 "Oreo" . Esta abstrae el código de bajo nivel del marco del sistema operativo Android, y debe ser compatible con versiones futuras para facilitar el desarrollo de actualizaciones de firmware. [ 7 ] Antes del Proyecto Treble, Android dependía de varias capas de abstracción de hardware heredadas no estandarizadas. [ 8 ]

Halium es una capa de abstracción de hardware (HAL) basada en Android que utilizan varios sistemas operativos móviles, como Ubuntu Touch y LuneOS, para ejecutarse en teléfonos inteligentes con Android preinstalado.

Véase también

Referencias

  1. "Portabilidad y plataformas de hardware compatibles" . Fundación NetBSD . Consultado el 12 de mayo de 2009 .
  2. "Capa de abstracción de hardware (HAL) de Windows NT" . Microsoft . 31 de octubre de 2006. Consultado el 25 de agosto de 2007 .
  3. Custer, Helen (1993), Inside Windows NT , Microsoft Press , Bibcode : 1993iwn..book.....C
  4. "Cambio de la capa de abstracción de hardware en Windows 2000 / XP – Smallvoid.com" . 15 de enero de 2001. Consultado el 18 de septiembre de 2020 .
  5. Russinovich, Mark E.; Solomon, David A.; Ionescu, Alex (2008). Windows Internals: Including Windows Server 2008 and Windows Vista (5.ª ed.). Redmond, Washington, EE. UU.: Microsoft Press . pág. 65. ISBN   978-0-7356-2530-3.
  6. 1 2 Soltis, Frank G. (1997). Inside the AS/400: Featuring the AS/400e Series (2.ª ed.). Loveland, Colorado, EE. UU.: Duke Press. ISBN  978-1-882419-66-1.
  7. "El 'Proyecto Treble' de Google resuelve uno de los muchos obstáculos de actualización de Android" . Ars Technica . 12 de mayo de 2017. Consultado el 12 de mayo de 2017 .
  8. "HAL convencionales y heredadas" . Proyecto de código abierto de Android .

Lecturas adicionales

  • "Especificación avanzada de computación RISC" (PDF) . MIPS Technologies . pág.  23. Consultado el 26 de febrero de 2013 .
  • Silberschatz, Abraham; Galvin, Peter Bear; Gagne, Greg (2002). Conceptos de sistemas operativos (6.ª  ed.). ISBN 0-471-41743-2.