Was macht der Prozessor, wenn ich Dinge von einem USB-Laufwerk auf ein anderes kopiere?

21

Werden alle Daten, die ich kopiere, durchlaufen oder gibt es einen direkteren Weg?

Felix Dombek
quelle
Der Prozessor ist aktiv und steuert über USB, jedoch nicht über Firewire (da diese Karte eine eigene CPU hat)
Tobylane

Antworten:

31

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.

William Hilsum
quelle
1
Schöne Metapher, @Wil.
Shinrai
4
@Shinrai - obwohl es nicht aufsteht, wenn sie psychisch sind! Ich würde das Objekt gerne mit meinem Gehirn bewegen!
William Hilsum
Hat DMA oder etwas die CPU nicht umgangen?
o0 '.
2
DMA hilft , indem die CPU eine geben , interruptwenn 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- ioctlCode aus, der mit den Gerätetreibern kommuniziert , über die kopiert werden soll chunks(der tatsächliche Name) DMA. Die CPU handhabt auch asynchronous IOund sync IOunterscheidet sich geringfügig von einer Kernel-Code-Ausführungsperspektive.
Henrik
1
Ich mache es nicht für den Reiseleiter, liebe diese Seite und helfe den Leuten! Ich denke nicht wirklich, dass es besser ist als zwei Sätze, aber hoffentlich ist es jetzt besser.
William Hilsum
5

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.

ChrisF
quelle
4

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.

BillThor
quelle
Was sind intelligente Kanäle? Könnten Sie dafür ein Pseudocode-Snippet zeigen?
Henrik
Intelligente Kanäle sind Hardwaregeräte, die E / A auf Mainframes verarbeiten. Ich gehe davon aus, dass es sich um eigenständige Mikrocomputer mit eingeschränkter Funktionalität handelt. Keine Ahnung, wie ihr Code aussieht. Sie waren sehr wichtig, wenn Mainframes Hunderte von Online-Benutzern mit 8 MB Arbeitsspeicher handhabten. Ich glaube, Commodore-Computer hatten früher eine zweite CPU in ihren Plattensystemen. Möglicherweise hatten sie eine ähnliche Funktionalität.
BillThor