3.4.5.1 Blockorientierte Geräte

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
Zeile 35: Zeile 35:
Die Geräteverwaltung definiert üblicherweise eine Standardschnittstelle, welche die Treiber aller blockorientierten Geräte unterstützen müssen. Darin vorgesehen sind beispielsweise Funktionen für
Die Geräteverwaltung definiert üblicherweise eine Standardschnittstelle, welche die Treiber aller blockorientierten Geräte unterstützen müssen. Darin vorgesehen sind beispielsweise Funktionen für
* die Initialisierung des Geräts,
* die Initialisierung des Geräts,
* das Lesen der Daten des adressierten Blocks vom Gerät, sowie
* das Lesen der Daten des adressierten Blocks vom Gerät,
* das Schreiben der Daten des adressierten Blocks zum Gerät.
* das Schreiben der Daten des adressierten Blocks zum Gerät, sowie
* die Behandlung eines vom Geräte-Controller ausgelösten Interrupts
* die Behandlung eines vom Geräte-Controller ausgelösten Interrupts.
</p>
</p>
<p>
<p>
Zeile 43: Zeile 43:
</p>
</p>


<br />
<p>
<p>
Ist ein blockorientiertes Gerät am System angeschlossen, so wird sein Treiber (z.B. beim Systemstart) in den Hauptspeicher geladen. Der Treiber implementiert (u.a.) die Funktionen initDevice(), readBlock(), writeBlock() und handleInterrupt().
Ist ein blockorientiertes Gerät am System angeschlossen, so wird sein Treiber (z.B. beim Systemstart) in den Hauptspeicher geladen. Der Treiber implementiert (u.a.) die Funktionen initDevice(), readBlock(), writeBlock() und handleInterrupt().

Version vom 21. November 2014, 11:51 Uhr

Blockorientierte Geräte

Blockorientierte Geräte übertragen Daten jeweils in kompletten Blöcken. Dies gilt sowohl beim Lesen von diesem Gerät, als auch beim Schreiben auf selbiges. Typische Blockgrößen liegen zwischen 512 und 32 768 Byte. Jeder Datenblock ist direkt adressierbar.

Beispiele für blockorientierte Geräte sind:

  • Festplatte
  • CD- oder DVD-Laufwerk
  • Bandlaufwerk


Beispiel

Eine Festplatte arbeite mit einer Blockgröße von 512 Byte. In Datenblock Nr. 723 soll das fünfte Byte geändert werden. Der folgende Ablauf ist dafür nötig:

  • Lade Datenblock Nr. 723 von der Festplatte.
  • Ändere das fünfte Byte wie gewünscht.
  • Schreibe Datenblock Nr. 723 zurück auf die Festplatte.

Es können also immer nur komplette Datenblöcke ( in diesem Beispiel 512 Byte) gelesen oder geschrieben werden.

Der betreffende Datenblock wird direkt adressiert ( Nr. 723).


Schnittstelle für blockorientierte Geräte

Die Geräteverwaltung definiert üblicherweise eine Standardschnittstelle, welche die Treiber aller blockorientierten Geräte unterstützen müssen. Darin vorgesehen sind beispielsweise Funktionen für

  • die Initialisierung des Geräts,
  • das Lesen der Daten des adressierten Blocks vom Gerät,
  • das Schreiben der Daten des adressierten Blocks zum Gerät, sowie
  • die Behandlung eines vom Geräte-Controller ausgelösten Interrupts.

Diese Funktionen werden vom Gerätetreiber implementiert.


Ist ein blockorientiertes Gerät am System angeschlossen, so wird sein Treiber (z.B. beim Systemstart) in den Hauptspeicher geladen. Der Treiber implementiert (u.a.) die Funktionen initDevice(), readBlock(), writeBlock() und handleInterrupt().

Durch das Laden des Treibers in den Hauptspeicher steht ab diesem Moment fest, ab welcher Adresse im Hauptspeicher der ausführbare Code der genannten Funktionen beginnt.


Beispiel

Zum Beispiel für die Festplatte:

  • ab Adresse 2 048 initDevice()
  • ab Adresse 2 560 readBlock()
  • ab Adresse 3 072 writeBlock()
  • ab Adresse 4 096 handleInterrupt()

Und für den DVD-Brenner:

  • ab Adresse 6 144 initDevice()
  • ab Adresse 7 168 readBlock()
  • ab Adresse 7 680 writeBlock()
  • ab Adresse 8 704 handleInterrupt()