¿Qué hace el procesador cuando copio cosas de un disco USB a otro?

21

¿Están pasando todos los datos que copio o hay otra forma más directa?

Felix Dombek
fuente
El procesador está activo y en control con USB, pero no con FireWire (ya que esa tarjeta tiene su propia CPU)
tobylane

Respuestas:

31

¡Complicado! Los datos realmente no pasan por la CPU per se.

Los datos y los 1 y 0 críticos pasan por el conjunto de chips, o chips de E / S dedicados y memoria, sin embargo, cuando está copiando archivos, el procesador ejecuta el comando para hacer la copia.

Imagine tener un objeto frente a usted (los datos), sus brazos (chipset / chip de E / S) y su cerebro (la CPU). En realidad, no usa su cerebro para mover el objeto, su cerebro ejecuta el "comando" en sus brazos para mover el objeto.

William Hilsum
fuente
1
Bonita metáfora, @Wil.
Shinrai
44
@Shinrai: ¡aunque no se sostiene si son psíquicos! ¡Me encantaría mover el objeto con mi cerebro!
William Hilsum
¿DMA o algo no pasó por alto la CPU?
o0 '.
2
DMA ayuda al proporcionarle a la CPU un interruptcomando IO para block device, como una memoria USB, que se haya completado . La CPU continúa ejecutando la copia. De hecho, lo que está haciendo la CPU es ejecutar el ioctlcódigo del núcleo que interactúa con los controladores del dispositivo para copiar chunks(el nombre real) DMA. La CPU también maneja asynchronous IOy es sync IOligeramente diferente de una perspectiva de ejecución de código de núcleo.
Henrik
1
No lo hago por el representante, ¡simplemente amo este sitio y ayudo a la gente! Realmente no creo que sea mejor como dos oraciones, pero espero que sea mejor ahora ... si no te gusta, creo que hay algo nuevo para los miembros inferiores, ¡intenta editarlo tú mismo!
William Hilsum
5

La CPU tiene que ejecutar el programa que lee el archivo de origen y luego escribe el archivo de destino.

Los datos que se leen (generalmente) se leerán en la memoria principal en fragmentos, pero en realidad no pasan por la CPU.

ChrisF
fuente
4

En un mainframe con canales inteligentes, la CPU solo les diría a los canales que hagan la copia. Muy eficiente y permite copias de seguridad grandes y rápidas con poca sobrecarga de la CPU.

Desafortunadamente, no tenemos canales inteligentes, por lo que la CPU termina en un bucle similar a:

para cada archivo (dev1); hacer
   createfile (dev2);
   copyfilecontent (dev1, dev2);
final;

La sobrecarga de la CPU no es tan alta a menos que haya muchos archivos pequeños, especialmente muchos archivos en el mismo directorio. La operación de creación de archivo generalmente tiene la mayor sobrecarga. La copia de disco a disco solo trata cada disco como un archivo preexistente.

BillThor
fuente
¿Qué son los canales inteligentes? ¿Podría mostrar un fragmento de pseudocódigo para eso?
Henrik
Los canales inteligentes son dispositivos de hardware que manejan E / S en mainframes. Espero que sean microcomputadoras de funcionalidad limitada por derecho propio. No tengo idea de cómo se ve su código. Eran muy importantes cuando los mainframes manejaban cientos de usuarios en línea en 8 MB de memoria. Creo que las computadoras Commodore solían tener una segunda CPU en sus sistemas de disco. Pueden haber tenido una funcionalidad similar.
BillThor