Si se lee el disco sin DMA:
- El controlador lee en serie el bloque (uno o más sectores) de la unidad:
- La lectura es bit por bit.
- Los bits del bloque se graban en el buffer interno del controlador.
- Se calcula la suma de verificación para corroborar que no existen errores de lectura.
- El controlador provoca una interrupción.
- El S. O. lee el bloque del disco por medio del buffer del controlador:
- La lectura es por byte o palabra a la vez.
- En cada iteración de este ciclo se lee un byte o una palabra del registro del controlador
- Se desperdicia tiempo del CPU.
DMA se ideó para liberar al CPU de este trabajo de bajo nivel.
El CPU le proporciona al controlador:
- La dirección del bloque en el disco.
- La dirección en memoria a donde debe ir el bloque.
- El número de bytes por transferir.
Luego de que el controlador leyó todo el bloque del dispositivo a su buffer y de que corroboró la suma de verificación:
- Copia el primer byte o palabra a la memoria principal.
- Lo hace en la dirección especificada por medio de la dirección de memoria de DMA.
- Incrementa la dirección DMA y decrementa el contador DMA en el número de bytes que acaba de transferir.
- Se repite este proceso hasta que el contador se anula y por lo tanto el controlador provoca una interrupción.
- Al iniciar su ejecución el S. O. luego de la interrupción provocada, no debe copiar el bloque en la memoria, porque ya se encuentra ahí y se almacena en memoria.
No hay comentarios:
Publicar un comentario