Sistemas operativos modernos

cesitan recordar cuál dispositivo está en cuál bus. Estas direcciones lógicas son análogas a los identificadores que da el sistema operativo a los programas de usuario para referirse a los ar­ chivos y a otros recursos del sistema. Este mecanismo también escuda a las capas superiores de las propiedades de estructuras de bus y convenciones de direccionamiento alternas. Las interrupciones tienen un problema similar: también dependen del bus. En este caso, en forma análoga, HAL proporciona servicios que asignan a las interrupciones nombres válidos para todo el sistema, así como servicios que permiten a los controladores anexar rutinas de servicio a las interrupciones de forma portáfil, sin tener que saber cuál vector de interrupción es para cuál bus. La administración de niveles de solicitud de interrupción también se maneja en HAL. Otro servicio de HAL es preparar y administrar las transferencias por DMA de forma inde­ pendiente del dispositivo. Pueden manejarse tanto el motor de DMA para todo el sistema, como los motores de DMA de tarjetas de E/S específicas. Se hace referencia a los dispositivos por sus direcciones lógicas. HAL también implementa la dispersión/aglomeración del software (es­ cribir o leer de bloques de memoria física que no son contiguos). HAL también administra relojes y temporizadores de manera portátil. Se lleva el control del fiempo en unidades de 100 ns a partir del 1 de enero de 1601, lo cual tiene una precisión mu­ cho mayor que el esquema de MS-DOS, con unidades de dos segundos a partir del 1 de enero de 1980, y maneja las muchas actividades relacionadas con las computadoras efectuadas en los si­ glos XVII, XVIII y XIX. Los servicios de tiempo desligan los controladores de las frecuencias rea­ les con que operan los relojes. Los componentes del kemel a veces tienen que sincronizarse en un nivel muy bajo, sobre todo cuando es necesario prevenir condiciones de competencia en sistemas multiprocesador. HAL proporciona algunas primitivas para administrar esta sincronización, como bloqueos gi­ ratorios, en los que una CPU tan sólo espera a que se libere un recurso que está en manos de otra CPU, sobre todo en situaciones en las que el recurso regularmente sólo se retiene durante unas cuantas instrucciones de máquina. Por último, una vez que arranca el sistema, HAL se comunica con el BIOS e inspecciona la memoria de configuración CMOS, si existe, para averiguar los buses y dispositivos de E/S existentes en el sistema y cómo se han configurado. Esta información se coloca entonces en el Registro para que otros componentes del sistema puedan consultarla sin tener que entender có­ mo funcionan el BIOS y la memoria de configuración. En la figura 11-8 se presenta un resu­ men de algunas de las cosas que hace HAL. Puesto que HAL depende en alto grado de la máquina, debe encajar a la perfección con el sistema en el que se instala; por ello, se incluyen diversas HAL en el CD-ROM de Windows 2000. En el momento de instalar el sistema, se escoge la HAL apropiada y se copia en el di­ rectorio del sistema \winnt\system32 del disco duro, con el nombre hal.dll. Después, cada vez que se arranque la máquina se usará esta versión de HAL para hacerlo. La eliminación de es­ te archivo impedirá arrancar la máquina. Aunque HAL es razonablemente eficiente, en el caso de aplicaciones mulfimedia podría no ser lo bastante rápida. Por ello, Microsoft produjo además un paquete de software llamado DirectX, que acrecienta HAL con procedimientos adicionales y permite a los procesos de usuario tener un acceso mucho más directo al hardware. DirectX es un tanto especializado, por lo que no lo trataremos más en este capítulo.

RkJQdWJsaXNoZXIy MjI4NDcx