Sistemas operativos modernos

tiempo varias solicitudes a diferentes controladoras de dispositivo, siempre que haya una for­ ma inequívoca de distinguir los acuses. Por ello, es común usar una línea de acuse del bus dis­ tinta paia cada canal DMA. Muchos buses pueden operar de dos modos: palabra por palabra y por bloques. Algunas controladoras DMA también pueden operar en cualquiera de los dos modos. En el primero, el funcionamiento es el que acabamos de describir: la controladora DMA solicita la transferencia de una palabra y la obtiene. Si la CPU también quiere el bus, tendrá que esperar. Este meca­ nismo se denomina robo de ciclos porque la controladora de dispositivo quita subrepticiamen­ te a la CPU un ciclo de bus de vez en cuando, haciéndola un poco más lenta. En modo de bloques, la controladora DMA le ordena a la controladora de dispositivo adquirir el bus, enviar una serie de transferencias y luego liberar. Esta forma de funcionar se denomina modo de rá­ faga. Es más eficiente que el robo de ciclos porque la adquisición del bus toma tiempo y pue­ den transferirse múltiples palabras con una sola adquisición. La desventaja del modo de ráfaga es que puede bloquear a la CPU y a otros dispositivos durante un tiempo considerable si se es­ tá transfiriendo una ráfaga larga. En el modelo que hemos estado describiendo, conocido como modo de sobrevuelo, la controladora DMA pide a la controladora de dispositivo transferir los datos de manera directa a la memoria principal. Un modo alterno que usan algunas controladoras DMA es pedir a la controladora de dispositivo que envíe la palabra a la controladora DMA, la cual entonces emi­ te una segunda solicitud de bus para escribir la palabra en el lugar donde debe ir. Este esque­ ma requiere un ciclo de bus extra por cada palabra transferida, pero es más flexible porque también puede efectuar transferencias de dispositivo a dispositivo e, incluso, de memoria a me­ moria (emitiendo primero un comando de lectura a la memoria y luego un comando de escri­ tura en una dirección de memoria distinta). Casi todas las controladoras DMA utilizan direcciones físicas de memoria para sus trans­ ferencias. Eso requiere que el sistema operativo convierta la dirección virtual del búfer de me­ moria deseado en una dirección física, y la escriba en el registro de dirección de la controladora DMA. Un esquema alterno que usan algunas controladoras DMA consiste en escribir direccio­ nes virtuales en la controladora. Luego, la controladora DMA usa la MMU para efectuar la tra­ ducción de virtual a física. Sólo pueden colocarse direcciones virtuales en el bus si la MMU forma parte de la memoria (lo cual es posible, pero poco común), no de la CPU. Ya mencionamos que el disco primero coloca los datos leídos en su búfer interno para que pueda comenzar el DMA. Tal vez se esté preguntando por qué la controladora de disco no al­ macena simplemente los bytes en la memoria principal tan pronto como los recibe del disco. Dicho de otro modo, ¿por qué necesita un búfer interno? Hay dos razones. La primera es que al usar un búfer interno, la controladora puede cotejar la suma de verificación antes de iniciar una transferencia. Si la suma es incorrecta, se indicará un error y no habrá transferencia. La segunda razón es que una vez que se ha iniciado una transferencia de disco, los bits si­ guen llegando del disco a un ritmo constante, sin importar que la controladora esté lista para recibirlos o no. Si la controladora tratara de escribir los datos en forma directa en la memoria, tendría que ocupar el bus de sistema para transferir cada palabra. Si dicho bus estuviera ocu­ pado porque otro dispositivo lo estuviera usando (por ejemplo, en modo de ráfaga), la contro­ ladora tendría que esperar. Si la siguiente palabra de disco llega antes de que la primera esté

RkJQdWJsaXNoZXIy MjI4NDcx