Werden alle Daten, die ich kopiere, durchlaufen oder gibt es einen direkteren Weg?
cpu
file-transfer
Felix Dombek
quelle
quelle
Antworten:
Ein schwieriges! Daten gehen per se nicht wirklich durch die CPU.
Daten und die kritischen Einsen und Nullen werden über den Chipsatz oder dedizierte E / A-Chips und den Speicher übertragen. Wenn Sie jedoch Dateien kopieren, wird der Befehl zum Kopieren vom Prozessor ausgeführt.
Stellen Sie sich vor, Sie haben ein Objekt vor sich (die Daten), Ihre Arme (Chipsatz / E / A-Chip) und Ihr Gehirn (die CPU). Sie benutzen Ihr Gehirn nicht wirklich, um das Objekt zu bewegen, Ihr Gehirn führt den "Befehl" an Ihre Arme aus, um das Objekt zu bewegen.
quelle
interrupt
wenn ein IO - Befehl einblock device
, wie beispielsweise einen USB - Stick, ist abgeschlossen . Die CPU setzt dann das Kopieren fort. Tatsächlich führt die CPU Kernel-ioctl
Code aus, der mit den Gerätetreibern kommuniziert , über die kopiert werden sollchunks
(der tatsächliche Name)DMA
. Die CPU handhabt auchasynchronous IO
undsync IO
unterscheidet sich geringfügig von einer Kernel-Code-Ausführungsperspektive.Die CPU muss das Programm ausführen, das die Quelldatei liest und dann die Zieldatei schreibt.
Die gelesenen Daten werden (normalerweise) in Chunks in den Hauptspeicher eingelesen, gehen aber nicht über die CPU.
quelle
Auf einem Mainframe mit intelligenten Kanälen weist die CPU die Kanäle lediglich an, das Kopieren durchzuführen. Sehr effizient und ermöglicht schnelle große Backups mit geringem CPU-Aufwand.
Leider haben wir keine intelligenten Kanäle, so dass die CPU in einer Schleife endet, die der folgenden ähnelt:
Der CPU-Overhead ist nicht so hoch, es sei denn, es befinden sich viele kleine Dateien, insbesondere viele Dateien, im selben Verzeichnis. Der Vorgang zum Erstellen einer Datei hat normalerweise den höchsten Overhead. Beim Kopieren von Datenträger zu Datenträger wird jeder Datenträger als bereits vorhandene Datei behandelt.
quelle