Sistemas operativos modernos

cia posee el hardware real. Esos dispositivos se presentan en forma de servicios independien­ tes de la máquina (llamadas a procedimientos y macros) que pueden usar el resto del sistema operativo y los controladores. Al emplear los servicios de HAL (que son idénticos en todos los sistemas Windows 2000, sea cual sea el hardware) y no direccionar de manera directa el hard­ ware, los controladores y el kemel requieren menos cambios al trasladarse a hardware nuevo. El traslado de HAL en sí es directo porque todo el código dependiente de la máquina está concentra­ do en un solo lugar y las metas del traslado están bien definidas, a saber, implementar todos los servicios de HAL. Los servicios que se escogieron para incluirse en HAL son los que tienen que ver con el conjunto de chips (chipset) de la tarjeta matriz y que varían de una máquina a otra dentro de lí­ mites razonablemente predecibles. Dicho de otro modo, están diseñados para ocultar las dife­ rencias entre la tarjeta matriz de un fabricante y la de otro, pero no las diferencias entre un Penfium y un Alpha. Los servicios de HAL incluyen acceso a los registros del dispositivo, di­ reccionamiento de dispositivos independiente del bus, manejo y restablecimiento de interrup­ ciones, transferencias por DMA, control de los temporizadores y del reloj de tiempo real, bloqueos giratorios de bajo nivel y sincronización de mulfiprocesadores, y comunicación con el BIOS y su memoria de configuración CMOS. HAL no proporciona abstracciones ni servi­ cios para disposifivos de E/S específicos como teclados, ratones o discos, ni para la unidad de administración de memoria. Como ejemplo de lo que hace la capa de abstracción de hardware, consideremos la cuesfión del uso de E/S con correspondencia en memoria o de puertos de E/S. Algunas máquinas tienen una cosa y otras tienen la otra. ¿Cómo debe programarse un controlador: de modo que use E/S con correspondencia en memoria o de modo que use puertos? En vez de forzar una decisión, lo cual haría que el controlador no pudiera trasladarse a una máquina que hiciera las cosas del otro modo, la capa de abstracción de hardware ofrece tres procedimientos que los creadores de controladores pueden ufilizar para leer los registros de dispositivo, y otros tres para escribirlos: uc = READ_PORT_UCHAR(puerto): WR ITE_PORT_UCHAR(puerto, uc); US = READ_PORT_USHORT(puerto): WRITE_PORT_USHORT(puei1o, us); ul = READ_PORT_ULONG(puerto): WRlTE_PORT_ULONG(puerto, ul); Estos procedimientos leen y escriben enteros sin signo de 8 , 16 y 32 bits, respectivamente, en el puerto especificado. Corresponde a la capa de abstracción de hardware decidir si aquí se ne­ cesita E/S con correspondencia en memoria. Así, un controlador puede trasladarse sin necesi­ dad de modificaciones entre máquinas que difieren en ia forma de implementar los registros de dispositivos. Muchas veces los controladores necesitan acceso a dispositivos de E/S específicos para hacer diversas cosas. En el nivel de hardware, un disposifivo fiene una o más direcciones en cierto bus. Puesto que las computadoras modernas suelen tener múltiples buses (ISA, PCI, SCSI, USB, 1394, etcétera), puede suceder que dos o más dispositivos tengan la misma dirección de bus, por lo que se necesita alguna forma de distinguirlos. HAL proporciona un servicio para identificar dispositivos, estableciendo una correspondencia entre las direcciones de dispositivo relativas al bus y direcciones lógicas válidas para todo el sistema. Así, los controladores no ne

RkJQdWJsaXNoZXIy MjI4NDcx