De la Sección 5.1.4 Acceso directo a la memoria en sistemas operativos modernos por Andrew S. Tanenbaum, Herbert Bos, 2014 ,
Para simplificar la explicación, suponemos que la CPU accede a todos los dispositivos y la memoria a través de un único bus del sistema que conecta la CPU, la memoria y los dispositivos de E / S, como se muestra en la figura 5-4.
Para explicar cómo funciona DMA, veamos primero cómo se producen las lecturas de disco cuando no se usa DMA.
- Primero, el controlador de disco lee el bloque (uno o más sectores) de la unidad en serie, poco a poco, hasta que todo el bloque esté en el búfer interno del controlador.
- A continuación, calcula la suma de verificación para verificar que no se hayan producido errores de lectura. Entonces el controlador provoca una interrupción. Cuando el sistema operativo comienza a funcionar, puede leer el bloque de disco del búfer del controlador un byte o una palabra a la vez ejecutando un bucle, con cada iteración leyendo un byte o palabra del registro de un dispositivo controlador y almacenándolo en la memoria principal.
P: en el segundo paso,
¿No se transfieren los datos " desde el búfer del controlador " a la memoria principal? ¿Por qué dice tanto " desde el búfer del controlador " como " desde el registro de un dispositivo controlador "?
En el segundo paso, ¿puede el controlador transferir datos desde su búfer a la memoria principal, sin interrumpir la CPU y sin volver a involucrar al sistema operativo?
Cuando se usa DMA, el procedimiento es diferente.
- Primero, la CPU programa el controlador DMA configurando sus registros para que sepa qué transferir a dónde (paso 1 en la figura 5-4).
También emite un comando al controlador de disco que le dice que lea los datos del disco en su búfer interno y verifique la suma de verificación. - Cuando hay datos válidos en el búfer del controlador de disco, puede comenzar DMA. El controlador DMA inicia la transferencia emitiendo una solicitud de lectura a través del 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 (o no le importa) si proviene de la CPU o de un controlador DMA. Por lo general, la dirección de memoria para escribir está en las líneas de dirección del bus, por lo que cuando el controlador de disco obtiene la siguiente palabra de su búfer interno, sabe dónde escribirla. La escritura en la memoria es otro ciclo de bus estándar (paso 3).
- Cuando se completa la escritura, el controlador de disco envía una señal de confirmación al controlador DMA, también a través del bus (paso 4). El controlador DMA luego incrementa la dirección de memoria para usar y disminuye el conteo de bytes. Si el recuento de bytes sigue siendo 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 hacerle saber que la transferencia ahora está completa. Cuando se inicia el sistema operativo, no tiene que copiar el bloque de disco en la memoria; Ya está ahí.
P: en el segundo paso, el controlador DMA solicita al controlador de disco que transfiera datos desde el búfer del controlador de disco a la memoria principal. En el primer paso, la CPU emite un comando al controlador de disco que le dice que lea los datos del disco en su búfer interno. Al mismo tiempo, ¿puede la CPU decirle al controlador de disco que transfiera datos desde el búfer del controlador de disco a la memoria principal, cuando el controlador de disco termina de transferir datos desde el disco al búfer del controlador de disco, de modo que no hay necesidad de ¿Controlador DMA para decirle al controlador de disco que transfiera datos desde el búfer del controlador de disco a la memoria principal? (No puedo entender por qué necesitamos un controlador DMA para la transferencia de datos entre el disco y la memoria principal, así que supongo que me falta algo importante para entender la cita).
- Primero, la CPU programa el controlador DMA configurando sus registros para que sepa qué transferir a dónde (paso 1 en la figura 5-4).
Un controlador de dispositivo de un dispositivo controla el dispositivo y realiza operaciones en el dispositivo. ¿En qué dispositivo controla y realiza operaciones un controlador DMA?
¡Gracias!