domingo, 11 de mayo de 2014

Operaciones de Entrada /salida

Tanto en la E/S programada como la basada en interrupciones, el CPU debe encargarse de la transferencia de datos una vez que sabe que hay datos disponibles en el controlador. Una mejora importante para incrementar la concurrencia entre el CPU y la E/S consiste en que el controlador del dispositivo se pueda encargar de efectuar la transferencia de datos, liberando de este trabajo al CPU, e interrumpirlo sólo cuando haya terminado la operación completa de E/S. Esta técnica se denomina acceso directo a memoria (DMA, Direct Memory Access). 
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