Subsistema E/S , DMA

Re: Subsistema E/S , DMA

de Diego Furrer Dellepiane -
Número de respuestas: 1

La PPT en la que aparece es la "Subsistema de Entrada/Salida". La duda se mantiene. Gracias!

En respuesta a Diego Furrer Dellepiane

Re: Subsistema E/S , DMA

de Alberto Castro -
Hola Diego,
Primero que nada te pido disculpas por la demora en responder a tu pregunta.
Motivos personales hicieron que no pudiera darte una respuesta completa a tiempo.
Tu pregunta es interesante y de hecho discutimos bastante este tema en clase cuando vimos DMA.

En un modelo tradicional, la CPU participa activamente en la transferencia de datos desde un dispositivo E/S hacia la memoria:
1- CPU emite una solicitud de lectura al controlador de E/S.
2- CPU espera hasta que el dato esté listo (polling o interrupción).
3- CPU transfiere el dato hacia la memoria.
Este proceso consume tiempo y recursos de la CPU.

Como el DMA permite que ciertos dispositivos de entrada/salida transfieran datos directamente hacia o desde la memoria principal del sistema, sin intervención directa de la CPU durante la transferencia, la libera de este trabajo repetitivo, mejorando el desempeño general del sistema al permitirle atender otras tareas mientras ocurre la transferencia.

Como bien planteas, el DMA se utiliza en transferencias desde dispositivos de almacenamiento secundario (discos SSD/HDD).
En ese caso el controlador DMA interactúa directamente con el controlador del disco. Los datos fluyen desde el disco hacia la memoria principal sin participación CPU. La CPU puede ejecutar otros procesos mientras sucede la transferencia. El DMA genera una interrupción cuando termina la transferencia.
Otro ejemplo de uso de DMA son las trasnferencias de datos desde las tarjetas de red (Ethernet, WiFi).
En estos casos, el DMA reduce el overhead de una transferencia masiva.

En el contexto de la clase, se presenta el escenario que para dispositivos orientados a caracteres (teclado/ratón) el problema no es el volumen de datos, sino la frecuencia de las interrupciones. Por ejemplo, un mouse puede generar hasta 1000+ eventos por segundo (especialmente los de gaming). El overhead no viene por la transferencia de datos, sino del cambio de contexto constante.

Saludos,
Alberto.