Archivo

Archivo de la etiqueta: hardware abstraction layer

HAL (Hardware Abstract Layer -Capa de Abstracción de Hardware- )

El sistema operativo es una capa de software cuyo objetivo es gestionar todos los dispositivos y proporcionar a los programas del usuario una interfaz con el hardware más sencilla.

Se puede dividir la arquitectura de la computadora en una jerarquía de capas las cuales se pueden observar a continuación:

capas

(Tomada de: Sistemas Operativos Modernos, Andrew S. Tanembaum)

En el nivel de “lenguaje maquina” para controlar un dispositivo se hace necesario utilizar instrucciones -50 a 300 instrucciones existen en lenguaje máquina, depende de la arquitectura del procesador- para cargar y mover valores en los registros  especiales de los dispositivos.

Por ejemplo, puede encargarse la lectura de un sector del disco cargando los valores de la dirección del sector en el disco, la dirección de memoria principal, el número de bytes y la direccionalidad (lectura o escritura) en sus registros. En la práctica, se necesita especificar muchos más parámetros, y la información de estado retornada por la unidad después de una operación es enormemente compleja. Además, en la programación de muchos dispositivos de E/S juega un papel muy importante una adecuada temporización.

Para ocultar esa complejidad se proporciona el sistema operativo utiliza una subcapa o elemento que oculta (parcialmente) el hardware y da al programador un repertorio de instrucciones más conveniente con el que trabajar. Por ejemplo, “read block from file” es más simple conceptualmente que tener que preocuparse sobre los detalles de cómo mover las cabezas lectoras, esperar a que se estabilicen, etcétera.

Entonces podemos definir HAL como un elemento del sistema operativo entre el  hardware y software que provee una abstracción sencilla en la arquitectura de la computadora.

Cuando HAL es empleado, las aplicaciones no acceden directamente al hardware pero sí lo hacen a esa capa de abstracción que provee el HAL.  HAL permiten a las aplicaciones ser independientes  de los dispositivos de hardware porque él se encarga de interactuar con el controlador del dispositivo.

capas_hal(Tomada de: Nios II Software Developer's Handbook)

HAL es un API con el cual podemos programar nuestras rutinas y aplicaciones y acceder a los dispositivos. En algunos sistemas operativos funciona como un ligero entorno en tiempo de ejecución que proporciona una simple interfaz con el controlador del dispositivo lo cual permite comunicación con el hardware subyacente. El HAL API está integrado en la biblioteca del estándar ANSI C. El HAL API permite acceder a archivos a través de dispositivos y funciones de la biblioteca familiar C, como printf (), fopen (), fwrite (), etc. Gracias a HAL no es necesario reescribir  las funciones printf(), fopen(),… para nuestro hardware especifico.

Los cambios en nuestro hardware automáticamente son detectadas por HAL gracias al HAL daemon que es el encargado de controlar y mantener la información de los dispositivos, la actualización automática de los cambios en el hardware subyacente evita los bug. Los administradores de dispositivos se comunican con HAL daemon para obtener el árbol de los dispositivos funcionando en la computadora.

admin_disp(Tomada de: mi PC)

Cada sistema operativo tiene su propia implementación de HAL.

Para Windows:

  • 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

Para ver que HAL utiliza tu sistema operativo windows mira:  ver hal

Bibliografía:
Sistemas operativos Modernos. Andrew S. Tanenbaum
Nios II Software Developer’s Handbook
http://people.freedesktop.org/~david/hal-spec/hal-spec.html
http://en.wikipedia.org/wiki/Hardware_abstraction_layer
http://www.freedesktop.org/wiki/Software/hal
http://es.wikipedia.org/wiki/HAL_(software)
http://www.iyonix.com/32bit/HAL.shtml

Seguir

Get every new post delivered to your Inbox.