Sistemas operativos modernos
medidas especiales para lograr que la E/S con correspondencia en memoria funcione en un sis tema con múltiples buses. Una posibilidad es enviar primero todas las referencias a la memo ria. Si ésta no puede responder, la CPU prueba los otros buses. Este diseño puede funcionar pero hace más complejo al hardware. Un segundo diseño que puede usarse coloca un dispositivo “espía” en el bus de memoria, que comunica todas las direcciones presentadas a los dispositivos de E/S que podrían estar in teresados. El problema aquí es que los dispositivos de E/S tal vez no puedan procesar las soli citudes con la rapidez con que puede hacerlo la memoria. Una tercera posibilidad, que es la que se usa en la configuración Pentium de ia figura 1-11, es filtrar las direcciones en el chip puente PCI. Este chip contiene registros de intervalo que se cargan en el momento de arrancar la máquina. Por ejemplo, el intervalo de 640K a IM podría marcarse como “no de memoria”. Las direcciones que caen en alguno de los intervalos marca dos como no de memoria se envían por el bus PCI, en vez de enviarse a la memoria. La desven taja de este esquema es que durante el arranque de la máquina es preciso determinar cuáles direcciones de memoria no son realmente tales. Así pues, cada esquema fiene argumentos a fa vor y en contra, por lo que es inevitable hacer arreglos y concesiones. 5.1.4 Acceso directo a memoria Tenga o no E/S con correspondencia en memoria, la CPU necesita direccionar las controlado- ras de dispositivos para intercambiar datos con ellas. La CPU puede solicitar datos a una con troladora de E/S, byte por byte, pero ello obliga a la CPU a perder tiempo. Por esta razón, es común utilizar un esquema distinto, llamado acceso directo a memoria (DMA; direct memory access). El sistema operativo sólo puede usar DMA si el hardware tíene una controladora DMA, aunque casi todos los sistemas lo tienen. A veces esta controladora está integrada en las contro ladoras de disco y de otro tipo, pero tal diseño requiere una controladora DMA aparte para cada dispositivo. Es más común que haya una sola controladora DMA (por ejemplo, en la tarjeta ma triz) para regular las transferencias a múltiples dispositivos, a menudo de manera concurrente. Sea cual sea su ubicación física, la controladora DMA tiene acceso al bus de sistema, inde pendientemente de la CPU, como se muestra en la figura 5-4. La controladora contiene varios registros que la CPU puede leer y escribir. Éstos incluyen un registro de dirección de memoria, un registro para conteo de bytes y uno o más registros de control. Los registros de control espe cifican el puerto de E/S que se usará, la dirección de la transferencia (leer del dispositivo de E/S o escribir en él), la unidad de transferencia (byte o palabra) y el número de bytes que se trans ferirán en cada ráfaga. Para explicar cómo funciona el DMA, primero examinemos la forma en que se efectúan las lecturas de disco cuando no se usa DMA. Primero, la controladora lee el bloque (uno o más sectores) de la unidad, bit por bit, hasta que todo el bloque esté en el búfer interno de la con troladora. Luego, calcula la suma de verificación para comprobar que no hubo errores al leer, y produce una interrupción. Cuando el sistema operativo comienza a ejecutarse, puede leer el bloque de disco del búfer de la controladora byte por byte o palabra por palabra, ejecutando un ciclo, en cada una de cuyas iteraciones lee un byte o palabra de un registro de control de la con troladora y lo almacena en la memoria principal.
RkJQdWJsaXNoZXIy MjI4NDcx