Ernst@at schrieb:Als Einstiegspunkt dazu die Serielle Schnittstelle zu verlinken, ist vielleicht nicht ganz optimal.
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.
auszugsweise einige ins Detail gehende weiterführende Links:
PCI-Express und Grafik des Bussystemes
NCQ im Überblick und dessen Funktionsbeschreibung(Link im Überblick dorthin ist falsch)
DMA Funktionsweise
Bei Bedarf kann ich Dir noch jede bitgenaue Detail-Beschreibung von der Programmschnittstelle über die von der CPU ausgeführten Maschinenbefehle bis in die BIOS-Codierung des Controllers und die Signaldetails an den Leitungen nachreichen - bis Dir der Kopf raucht
so hab ich mir das vorgestellt! dickes dankeschön an Ernst@at.
Gruß