1. Primero, el controlador de disco lee el bloque (uno o ms sectores) de la unidad
en serie, bit por bit, hasta que todo el bloque se encuentra en la memoria intermedia interna del controlador. A continuacin, calcula la suma de comprobacin para verificar que no se hayan producido errores de lectura. Entonces el controlador causa una interrupcin. Cuando el sistema operativo comienza a ejecutarse, puede leer el bloque de disco del bfer del controlador un byte o una palabra a la vez ejecutando un bucle, cada iteracin leyendo un byte o palabra de un registro de dispositivo controlador y almacenndolo en la memoria principal.
2. Cuando se usa DMA, el procedimiento es diferente.
En primer lugar, la CPU programa el controlador DMA configurando sus registros para que sepa dnde transferirlos (paso 1 en la figura 5-4). Tambin emite un comando al controlador del disco dicindole que lea datos del disco en su bfer interno y verifique la suma de verificacin. Cuando hay datos vlidos en el bfer del controlador de disco, DMA puede comenzar. El controlador DMA inicia la transferencia emitiendo una solicitud de lectura sobre el bus al controlador de disco (paso 2). Esta solicitud de lectura se parece a cualquier otra solicitud de lectura, y el controlador de disco no sabe (ni le importa) si proviene de la CPU o de un controlador DMA. Normalmente, la direccin de memoria para escribir est en las lneas de direccin del bus, por lo que cuando el controlador de disco extrae la siguiente palabra de su bfer interno, sabe dnde escribirla. La escritura en memoria es otro ciclo de bus estndar (paso 3). Cuando se completa la escritura, el controlador de disco enva una seal de confirmacin al controlador DMA, tambin a travs del bus (paso 4). El controlador DMA luego incrementa la direccin de memoria para usar y disminuye el recuento de bytes. Si el recuento de bytes es an mayor que 0, los pasos 2 a 4 se repiten hasta que el recuento llegue a 0. En ese momento, el controlador DMA interrumpe la CPU para informarle que la transferencia se ha completado. Cuando se inicia el sistema operativo, no tiene que copiar el bloque de disco a la memoria; ya est all.
Apuntes:
Un DMA es un dispositivo programable. Es decir, la CPU tiene la
responsabilidad final de decirle al DMA qu hacer. Por supuesto, durante el intervalo de tiempo donde el DMA asume el control del sistema, la CPU cooperar permitiendo que el DMA ejecute el programa. Bajo el control de la CPU (y del SO que la ejecuta), un DMA tiene la capacidad de tomar el control de uno o ms buses (en plural) para facilitar la transferencia de datos desde el controlador de disco a la memoria principal. Durante el intervalo de tiempo en el que el DMA toma el bus (plural), el DMA emitir comandos sobre ese bus, es decir, en lugar de su controlador habitual, es decir, el DMA pretende que est haciendo el trabajo de la CPU. Si la transferencia de datos involucra dos buses diferentes, el DMA puede tener que hacer esto con un bus diferente. Para poder mover un nmero de bytes (palabras, etc.), el DMA contiene un contador de bucles para hacer un seguimiento de la cantidad restante de datos que se copiarn. Para poder escribir en la memoria principal, el DMA contiene un registro de direccin de memoria, programable por la CPU, de modo que la CPU pueda indicarle al DMA dnde escribir los datos. Dependiendo del diseo del bus del sistema, el DMA puede o no tener que lidiar con los horripilantes detalles de los ciclos de temporizacin DRAM. rase una vez, un tiempo despus de que DMA se haba inventado, algunos dispositivos perifricos comenzaron a pre empaquetar DMA en sus controladores: esto se conoce como Bus Mastering. Aun as, ya sea que el DMA se asiente en el paquete de la CPU, la placa madre o la tarjeta de E / S, debe estar bajo el control (programacin) de la CPU, ya que de alguna manera debe negociar el acceso al bus del sistema (plural) y la memoria principal. Los sistemas informticos modernos tienen un subsistema dedicado llamado controlador DRAM. Si hay uno, es casi seguro que este Controlador DRAM tambin cumplir con la funcionalidad de DMA, es decir, parece que es un "bucle de copiado de bytes" programable, y toda la complejidad antes mencionada est escondida dentro del silicio de la DRAM. Controlador.
Bibliografa:
SoftwareEngineering (2015) How does a DMA controller work? (consulta: 17
de noviembre de 2017) (https://softwareengineering.stackexchange.com/questions/272470/how-does-a- dma-controller-work)