HAL (software)
De Wikipedia, la enciclopedia libre
| HAL | |
|---|---|
| Desarrollador | FreeDesktop.org |
| Última versión estable | 0.5.11 (5 de mayo de 2009) |
| S.O. | Linux, FreeBSD , Windows |
| Licencia | GPL y AFL |
| Sitio web | freedesktop.org/wiki/Software/hal |
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 correr 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 kernel 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, 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 APIs. Los lenguajes de alto nivel suelen usar HALs o APIs para comunicarse con componentes de menor nivel.
Con HAL, toda la información sobre ciertas clases 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.
Contenido |
[editar] El uso de HAL en Windows
El HAL se implementa vial el módulo del kernel hal.dll. Todos los componentes de Windows acceden al hardware vía el HAL, y están disponibles múltiples HAL específicos para diferentes plataformas de hardware. El HAL se escoge en el momento de instalar el SO. Ésta es la lista de HALs disponibles:
- Standard PC (non-ACPI) - Hal.dll - MPS Uniprocessor PC - Halapic.dll - MPS Multiprocessor PC - Halmps.dll - Advanced Configuration and Power Interface (ACPI) PC - Halacpi.dll - ACPI Uniprocessor PC - Halaacpi.dll - ACPI Multiprocessor PC - Halmacpi.dll
Los últimos tres elementos de la lista son los más comunes. El proceso de instalación selecciona el HAL correcto y lo copia en la carpeta %systemroot%\system32 como hal.dll.
Para determinar la HAL que se carga: Hacer clic con el botón secundario en el icono Mi PC en el escritorio y, a continuación, hacer clic en Propiedades . Hacer clic en la ficha hardware . Hacer clic en Administrador de dispositivos . Hacer clic en dispositivos por tipo en el menú Ver , si esta opción no está habilitada. Hacer doble clic en equipo a la vista que se carga HAL.
[editar] El uso de HAL en Linux
Aunque los sistemas operativos basados en Linux tienen compatibilidad de hardware para un amplio rango de dispositivos, no siempre funcionaban automáticamente; esto cambió con la introducción del HAL. Tradicionalmente los usuarios tenían que buscar en Internet y escribir líneas de comandos para que su hardware funcionase, lo que resultaba muy tedioso y podía confundir. La capa HAL provee a las aplicaciones de una forma sencilla para reconocer hardware en el sistema. Antes las aplicaciones de escritorio descubrían el hardware “hablando” directamente con el kernel, ya que éste mantiene una lista de dispositivos conectados al sistema. Este proceso no siempre funcionaba correctamente. Con HAL toda la información sobre ciertas clases de hardware es fácilmente accesible en un formato bien definido. Cuando un dispositivo nuevo es conectado al sistema se envía una señal asíncrona al bus de mensajes del sistema detallando qué tipo de dispositivo se ha añadido. Cualquier aplicación de escritorio se puede conectar al bus de mensajes para descubrir hardware. Internamente, el demonio HAL mantiene una lista de objetos directorio que contiene pares de clave/valor bien definidas que describen lo que el objeto representa. Cada dispositivo es identificado por un Identificador Único de Dispositivo (Unique Device Identifier, UDI). Los pares de clave/valor, llamados propiedades del dispositivo, están definidos en la especificación del HAL.
Una vez que el demonio HAL ha recogido toda la información sobre un dispositivo, incluyendo la fusión de información de los archivos de información sobre dispositivos, ya está listo para anunciar la presencia del nuevo objeto dispositivo.
[editar] Llamadas o Callouts
Justo antes del anuncio de la presencia de un dispositivo pueden ejecutarse programas específicos del SO para configurar la el sistema operativo de base. Por ejemplo, para que un usuario sin privilegios monte un sistema de archivos hay que escribir una línea en la tabla de archivos del sistema /etc/fstab. En HAL esto se consigue gracias a una llamada (callout). Cualquier programa en la carpeta /etc/hal/device.d/ es ejecutado cuando un dispositivo es añadido o extraído. Esto es lo mismo que un programa fstab-sync. El objetivo de este programa es el de modificar /etc/fstab cuando un sistema de archivos montable en un dispositivo de almacenamiento es añadido en o extraído del sistema.
Por ejemplo, para un lector Compact Flash fstab-sync añadiría la siguiente línea:
/dev/sda1 /media/CANON_DC vfat pamconsole,noatime,sync,fscontext=system_u:object_r:removable_t,exec,noauto,managed 0 0
La opción pamconsole especifica que cualquier usuario (sin privilegios) puede montar el sistema. La opción managed especifica que la línea fue añadida por un programa y no por el administrador del sistema. Esta opción es útil si el administrador ya ha añadido una entrada por lo que fstab-sync rehúsa añadir una entrada. Con esto fstab-sync crearía el punto de montaje /media/mi_dispositivo y añadiría la entrada en el archivo /etc/fstab.
Una vez se han completado todas las llamadas el demonio HAL anuncia la presencia del objeto dispositivo en el bus de mensajes del sistema. Programas como el GNOME Volume Manager en Fedora permiten al usuario retocar las especificaciones para los distintos dispositivos.
Una característica interesante del HAL son sus propiedades persistentes, que se aseguran de que las propiedades de un dispositivo se guardan para cuando el dispositivo se vuelve a enchufar.
HAL no frena el acceso al hardware, simplemente es una pieza del software que mantiene una lista de dispositivos con propiedades bien definidas para cada uno. Además, el HAL provee de espacio para las propiedades de aplicación definidas para estos dispositivos.
[editar] Véase también
[editar] Enlaces externos
Portal:Software Libre Contenido relacionado con Software Libre.- HAL - Hardware Abstraction Layer en freedesktop.org (En inglés)
- Making Hardware Just Work por Havoc Pennington (Julio de 2003) (En inglés)
- Microsoft Ayuda y Soporte Determinar la capa HAL que se usa
- Build or Buy Cambiar la placa madre sin reinstalar el sistema operativo (En inglés)
- HAL en Redhat Fedora Explicación muy detallada (En inglés)

