stringtranslate.com

HAL (programa)

HAL ( Capa de Abstracción de Hardware o más bien Biblioteca de Anotación de Hardware ) es un subsistema de software para sistemas operativos tipo UNIX que proporciona abstracción de hardware .

HAL ya no se utiliza en la mayoría de las distribuciones de Linux y en FreeBSD. La funcionalidad se está fusionando con udev en Linux a partir de 2008-2010 y con devd en FreeBSD. [ cita requerida ] Anteriormente, HAL se creaba 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 utilizaran 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, tanto bajo la Licencia Pública General de GNU como bajo la Licencia Libre Académica . [2]

HAL no está relacionado con el concepto de 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 núcleo del sistema operativo era responsable de proporcionar una interfaz abstracta al hardware en el que se ejecutaba el sistema. Las aplicaciones utilizaban la interfaz de llamada del sistema o realizaban operaciones de E/S de archivos en los nodos del dispositivo para comunicarse con el hardware a través de estas abstracciones. Esto era suficiente para el hardware simple de los primeros ordenadores de escritorio.

Sin embargo, el hardware de las computadoras ha aumentado en complejidad y las abstracciones proporcionadas por los núcleos 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 buses modernos también se han vuelto compatibles con hot-plug y pueden tener topologías no triviales . Como resultado, los dispositivos se descubren o cambian de estado de maneras 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 reimplementar la lógica de soporte de hardware. [1]

Algunos dispositivos también requieren programas auxiliares privilegiados para prepararlos para su uso. Estos a menudo deben invocarse de maneras que pueden resultar difíciles de expresar con el modelo de permisos de Unix (por ejemplo, permitir que los usuarios se unan a redes inalámbricas solo si han iniciado sesión en la consola de video). [1] Los autores de aplicaciones recurren al uso de binarios setuid o ejecutan daemons de servicio para proporcionar su propio control de acceso y separación de privilegios, lo que potencialmente introduce agujeros de seguridad cada vez.

Diseño

HAL es un único demonio responsable de descubrir, enumerar y mediar el acceso a la mayor parte del hardware del equipo host. Las aplicaciones se comunican con HAL a través del mecanismo IPC de D-Bus , 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, como cuando se conecta una cámara digital , cuando un disco óptico gira o cuando una computadora portátil cierra su tapa. [3] [4]

Implementaciones y obsolescencia

En Linux, HAL utiliza /sysun sistema de archivos virtual para sistemas Linux para descubrir hardware y escuchar eventos de conexión en caliente del núcleo . 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 , distribuciones Linux como Ubuntu , [5] Debian , [6] y Fedora y en FreeBSD, [7] y proyectos como KDE, [8] GNOME y X.org están en proceso de descontinuar HAL ya que se ha "convertido en un gran desastre monolítico inmantenible". [5] El proceso está prácticamente completo, pero HAL sigue utilizándose en cierta medida: 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 ser fusionado con udev (udev principal, libudev y udev-extras) y la funcionalidad existente de udev y kernel. 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 movido a udev propiamente dicho.

Véase también

Referencias

  1. ^ abc Pennington, Havoc (10 de julio de 2003), Cómo hacer que el hardware funcione
  2. ^ Texto de la licencia del código fuente de HAL: HAL se le otorga bajo su elección de la Licencia Libre Académica versión 2.1 o la Licencia Pública General GNU versión 2.
  3. ^ Zeuthen, David (1 de noviembre de 2009), Especificación HAL 0.5.14, freedesktop.org , consultado el 15 de enero de 2017
  4. ^ "hal: doc/spec". 16 de marzo de 2010. Consultado el 15 de enero de 2017 .
  5. ^ ab Halsectomy, ubuntu.com , 10 de mayo de 2013 , consultado el 15 de enero de 2017
  6. ^ "HALRemoval". debian.org . 28 de junio de 2011 . Consultado el 15 de enero de 2017 .
  7. ^ "Características/HalRemoval". Proyecto Fedora . 2012-01-09 . Consultado el 2017-01-15 .
  8. ^ "Revisión 1206281: Funciones en KDE Base". KDE . 2010-12-19 . Consultado el 15 de enero de 2017 .
  9. ^ "Descripción técnica: eliminación de HAL". ubuntu.com. 2010-05-17 . Consultado el 2017-01-15 .

Enlaces externos