0

Ablauf: Dateien kopieren auf Hardware- und Software-Ebene

Hab vor einiger Zeit mal in einem Forum nachgefragt, wie eigentlich das Dateien kopieren auf dem PC abläuft. Die Anwort will ich euch natürlich nicht vor enthalten:

Auf der Software-Seite sieht es so aus, dass die Copy-Anwendung (z.B. der Windows Explorer) den Copy-Befehl in Einzelteilen zerlegt an das Filesystem(z.B. NTFS) weitergibt:

(nicht in allen Einzelheiten)
– lesen des Directorys der Source-Platte – Feststellen der Dateigröße
– schreiben des neuen Directory-Eintrags auf die Target-Platte, Anforderung des dazu und für die Target-Datei notwendigen Platzes)
– wechselweise lesen/schreiben (in Clustergröße) der Datei

das resultiert an der Hardware/Software Schnittstelle zwischen Betriebssytem und BIOS, je nach Größe der Datei, in vielen tausenden Wiederholungen von
– Leseoperation(Sektoradresse, Anzahl Sektoren eines Clusters) von der Source-Platte
– und Schreiboperation(Sektoradresse, Anzahl Sektoren eines Clusters) zur Target-Platte
mit Angabe des dabei zu verwendeten RAM-Bereiches

Diese werden über das BIOS vom entsprechenden Controller übernommen, queued(max 32 je Device), und bei der nächsten Übertragungsmöglichkeit an die Device weitergegeben.

Die Device übernimmt diese Befehle, queued sie wieder(bei NCQ), und führt sie in einer Reihenfolge ihres Gutdünkens ganz oder teilweise aus.
Der Datentransport erfolgt (mglw über den Cache) über von der HDD gesteuerten DMA zwischen RAM und Plattenoberfläche in Paketen
Ist einer der Befehle vollständig ausgeführt oder wegen Fehlers abgebrochen, meldet die HDD das dem Controller

Der Controller meldet die erfolgreiche(oder aus Fehlergründen abgebrochene) Ausführung jedes I/O Befehls zurück an das Betriebssystem, welches wiederum das Programm davon informiert.

An dieser Stelle möchte ich nochmal Ernst@at aus dem Computerbase-Forum danken, von dem diese Antwort stammt.

Original link: http://www.computerbase.de/forum/showthread.php?p=7203781#post7203781



Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.