HAL ( Capa de abstracción de hardware o más bien Biblioteca de anotaciones de hardware ) es un subsistema de software para sistemas operativos tipo UNIX que proporciona abstracción de hardware .
Lanzamiento estable | 0.5.14 / 30 de noviembre de 2009 |
---|---|
Sistema operativo | Linux , FreeBSD , NetBSD , OpenSolaris , Solaris |
Plataforma | UNIX |
Tipo | Software del sistema |
Licencia | Licencia pública general GNU y licencia libre académica |
Sitio web | freedesktop |
HAL ahora está obsoleto en la mayoría de las distribuciones de Linux y en FreeBSD. La funcionalidad se fusionará en udev en Linux a partir de 2008–2010 y devd en FreeBSD. [ cita requerida ] Anteriormente, HAL se construyó sobre udev. [ cita requerida ]
Algunos otros sistemas operativos que no tienen una alternativa como udev o devd todavía usan HAL.
El propósito de la capa de abstracción de hardware era permitir que las aplicaciones de escritorio descubrieran y usaran el hardware del sistema host a través de una API simple, portátil y abstracta , independientemente del tipo de hardware subyacente. [1]
HAL para el sistema operativo Linux fue concebido originalmente por Havoc Pennington . Se convirtió en un proyecto de freedesktop.org y fue una parte clave de la pila de software de los entornos de escritorio GNOME y KDE . Es software libre , con doble licencia bajo la Licencia Pública General GNU y la Licencia Libre Académica . [2]
HAL no está relacionado con el concepto de los HAL del kernel de Windows NT , que manejan algunas funciones básicas específicas de la plataforma dentro del kernel, como el enrutamiento de interrupciones.
Razón fundamental
Tradicionalmente, el kernel del sistema operativo era responsable de proporcionar una interfaz abstracta al hardware en el que se ejecutaba el sistema. Las aplicaciones utilizaron la interfaz de llamada del sistema o realizaron E / S de archivos en los nodos del dispositivo para comunicarse con el hardware a través de estas abstracciones. Esto fue suficiente para el hardware simple de las primeras computadoras de escritorio.
Sin embargo, el hardware de la computadora ha aumentado en complejidad y las abstracciones proporcionadas por los kernels de Unix no han seguido el ritmo de la proliferación de tipos de dispositivos y periféricos que ahora son comunes tanto en servidores como en computadoras de escritorio. La mayoría de los modernos autobuses también se han convertido conexión en caliente -capaz y pueden tener no triviales topologías . Como resultado, los dispositivos se descubren o cambian de estado de formas que pueden ser difíciles de rastrear a través de la interfaz de llamada del sistema o Unix IPC. La complejidad de hacerlo obliga a los autores de aplicaciones a volver a implementar la lógica de soporte de hardware. [1]
Algunos dispositivos también requieren programas auxiliares con privilegios para prepararlos para su uso. A menudo, estos deben invocarse de maneras que pueden ser incómodas de expresar con el modelo de permisos de Unix (por ejemplo, permitir que los usuarios se unan a redes inalámbricas solo si están conectados a la consola de video). [1] Los autores de aplicaciones recurren al uso de binarios setuid o ejecutan demonios de servicio para proporcionar su propio control de acceso y separación de privilegios, lo que puede introducir agujeros de seguridad cada vez.
Diseño
HAL es un demonio único responsable de descubrir, enumerar y mediar el acceso a la mayor parte del hardware en la computadora host. Las aplicaciones se comunican con HAL a través del mecanismo D-Bus IPC , que abstrae el hardware detrás de un mecanismo RPC basado en objetos .
Cada dispositivo de hardware lógico se representa como un objeto D-Bus y su dirección de bus se utiliza como un identificador único. Los dispositivos incluyen abstracciones como particiones de disco y redes inalámbricas visibles. La funcionalidad del dispositivo se expone a través de interfaces D-Bus y se accede a su estado a través de propiedades , un conjunto de pares clave-valor.
HAL transmite eventos de hardware como señales en estos objetos; las aplicaciones pueden escuchar señales y reaccionar a los eventos de hardware que significan, tales como una cámara digital que se conecta, un disco óptico girando o una computadora portátil que cierra la tapa. [3] [4]
Implementaciones y obsolescencia
En Linux, HAL usa /sys
(un sistema de archivos virtual para sistemas Linux ) para descubrir hardware y escuchar eventos de conexión en caliente del kernel . Algunas distribuciones de Linux también proporcionan una regla udev para permitir que el demonio udev notifique a HAL cada vez que aparezcan nuevos nodos de dispositivo.
Obsoleto
A partir de 2011[actualizar], Distribuciones de Linux como Ubuntu , [5] Debian , [6] y Fedora y en FreeBSD, [7] y proyectos como KDE, [8] GNOME y X.org están en el proceso de desaprobar HAL ya que "se ha convertido un gran lío monolítico incontenible ". [5] El proceso está en gran parte completo, pero queda algo de uso de HAL: Debian squeeze (febrero de 2011) y Ubuntu versión 10.04 eliminan HAL del sistema básico y del proceso de arranque. [9] En Linux, está en proceso de fusionarse en udev (main udev, libudev y udev-extras) y la funcionalidad udev y kernel existente. El reemplazo para sistemas que no son Linux como FreeBSD es devd.
Inicialmente, se planeó un nuevo demonio DeviceKit para reemplazar ciertos aspectos de HAL, pero en marzo de 2009, DeviceKit quedó obsoleto a favor de agregar el mismo código a udev como paquete udev-extras , y algunas funciones ahora se han trasladado a udev propiamente dicho.
Ver también
- devfsd
- eudev
- udev
- UPower
Referencias
- ↑ a b c Pennington, Havoc (10 de julio de 2003), Making Hardware Just Work
- ^ Texto de la licencia del código fuente de HAL ,
HAL se le concede bajo la licencia académica libre versión 2.1 o la licencia pública general GNU versión 2.
- ^ Zeuthen, David (2009-11-01), HAL 0.5.14 Especificación , freedesktop.org , recuperados 01/15/2017
- ^ "hal: doc / spec" . 2010-03-16 . Consultado el 15 de enero de 2017 .
- ^ a b Halsectomy , ubuntu.com , 2013-05-10 , consultado el 2017-01-15
- ^ "HALRemoval" . debian.org . 2011-06-28 . Consultado el 15 de enero de 2017 .
- ^ "Funciones / HalRemoval" . Proyecto Fedora . 2012-01-09 . Consultado el 15 de enero de 2017 .
- ^ "Revisión 1206281: Características en KDE Base" . KDE . 2010-12-19 . Consultado el 15 de enero de 2017 .
- ^ "TechnicalOverview: eliminación de HAL" . ubuntu.com. 2010-05-17 . Consultado el 15 de enero de 2017 .
enlaces externos
- HAL - Capa de abstracción de hardware