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, asumimos que la CPU accede a todos los dispositivos y la memoria a través de un solo bus del sistema que conecta la CPU, la memoria y los dispositivos de E / S, como se muestra en la Fig. 5-4.
ParaexplicarcómofuncionaDMA,veamosprimerocómoseproducenlaslecturasdeldisco. cuandonoseutilizaDMA.
- Primero,elcontroladordeldiscoleeelbloque(unoomássectores)delaunidadenserie,bitporbit,hastaquetodoelbloqueestáen la búferinternodelcontrolador.
- Acontinuación,calculalasumadecomprobaciónparaverificarquenosehayanproducidoerroresdelectura.Entonceselcontroladorprovocaunainterrupción.Cuandoel operando elsistemacomienzaaejecutarse,puedeleerelbloquedediscodesdeel búferdelcontroladorunbyteounapalabraalavezmediantelaejecucióndeunbucle, concadaiteraciónleyendounbyteopalabradeuncontrolador dispositivoseregistraysealmacenaenlamemoriaprincipal.
P:enelsegundopaso,
¿losdatosnosetransfieren" desde el búfer del controlador " a la memoria principal? ¿Por qué dice tanto " desde el controlador búfer "y" de un registro de dispositivo del controlador "?
-
en el segundo paso, ¿puede el controlador transferir datos desde su búfer a la memoria principal, sin interrumpir a la CPU, y ¿sin involucrar nuevamente al sistema operativo?
-
Cuando se usa DMA, el procedimiento es diferente.
- Primero, la CPU programa el controlador DMA estableciendo sus registros para que sepa qué transferir a dónde (paso 1 en la Fig. 5-4).
También emite un comando al controlador de disco diciéndole que leer datos del disco en su búfer interno y verifique la suma de comprobación. - Cuando hay datos válidos en el búfer del controlador de disco, DMA puede comenzar. El controlador DMA inicia la transferencia emitiendo una lectura solicite a través del bus al controlador de disco (paso 2). Esta lectura solicitud se parece a cualquier otra solicitud de lectura, y el controlador de disco no lo hace saber (o cuidar) si proviene de la CPU o de un controlador DMA. Por lo general, la dirección de memoria para escribir está en la dirección del bus líneas, por lo que cuando el controlador de disco recupera la siguiente palabra de su búfer interno, sabe dónde escribirlo. 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 número de bytes. Si el número de bytes es aún mayor que 0, los pasos 2 a 4 se repiten hasta que el conteo llega a 0.
- En ese momento, el controlador DMA interrumpe la CPU para hacerle saber que la transferencia está completa. Cuando el funcionamiento sistema se inicia, no tiene que copiar el bloque de disco a la memoria; es ya allí.
P: en el segundo paso, el controlador DMA solicita el disco controlador para transferir datos desde el búfer del controlador de disco a la memoria principal. En el primer paso, la CPU envía un comando al controlador del disco para que lea los datos del disco en su búfer interno. Al mismo tiempo, ¿puede la CPU también indicar al controlador del disco que transfiera datos? desde el búfer del controlador de disco a la memoria principal, cuando el controlador de disco finaliza la transferencia de datos del disco al búfer del controlador de disco, por lo que no es necesario que el controlador DMA le indique al controlador del disco que transfiera datos del búfer del controlador de disco a la memoria principal? (No entiendo por qué necesitamos un controlador DMA para la transferencia de datos entre el disco y la memoria principal, así que supongo que me olvido de algo importante para entender la cita).
- Primero, la CPU programa el controlador DMA estableciendo sus registros para que sepa qué transferir a dónde (paso 1 en la Fig. 5-4).
-
Un controlador de dispositivo de un dispositivo controla el dispositivo y realiza Operaciones en el dispositivo. ¿Qué dispositivo controla un controlador DMA? y realizar operaciones en?
¡Gracias!