Werden alle Daten, die ich kopiere, durchlaufen oder gibt es einen direkteren Weg?
Werden alle Daten, die ich kopiere, durchlaufen oder gibt es einen direkteren Weg?
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.
interrupt
wenn ein IO - Befehl ein block 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 soll chunks
(der tatsächliche Name) DMA
. Die CPU handhabt auch asynchronous IO
und sync IO
unterscheidet sich geringfügig von einer Kernel-Code-Ausführungsperspektive.
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:
für jede Datei (dev1); machen createfile (dev2); copyfilecontent (dev1, dev2); Ende;
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.