Tutti i dati che copio li attraversano o esiste un altro modo più diretto?
Tutti i dati che copio li attraversano o esiste un altro modo più diretto?
Risposte:
Uno complicato! I dati non passano davvero attraverso la CPU in sé.
I dati e gli 1 e gli 0 critici passano attraverso il chipset o chip e memoria I / O dedicati, tuttavia, quando si copiano i file, il comando per eseguire la copia viene eseguito dal processore.
Immagina di avere un oggetto davanti a te (i dati), le tue braccia (Chipset / chip I / O) e il tuo cervello (la CPU). In realtà non usi il cervello per muovere l'oggetto, il cervello esegue il "comando" sulle braccia per muovere l'oggetto.
interrupt
ogni volta che un comando IO a un block device
, come una chiavetta USB, è stato completato . La CPU continua quindi a eseguire la copia. In effetti, ciò che la CPU sta facendo è eseguire il ioctl
codice del kernel che si interfaccia con i driver del dispositivo su cui copiare chunks
(il nome effettivo) DMA
. La CPU gestisce anche asynchronous IO
e sync IO
leggermente diversa da una prospettiva di esecuzione del codice del kernel.
Su un mainframe con canali intelligenti, la CPU direbbe semplicemente ai canali di fare la copia. Molto efficiente e consente backup rapidi di grandi dimensioni con un piccolo sovraccarico della CPU.
Sfortunatamente, non abbiamo canali intelligenti, quindi la CPU finisce in un ciclo simile a:
per ogni file (dev1); fare CreateFile (DEV2); copyfilecontent (dev1, dev2); fine;
Il sovraccarico della CPU non è così elevato a meno che non ci siano molti piccoli file, in particolare molti file nella stessa directory. L'operazione di creazione del file di solito ha il sovraccarico maggiore. La copia da disco a disco considera ogni disco come un file preesistente.