Geräteverwaltung

Unter der Geräteverwaltung fasst man alle Aufgaben und Tätigkeiten des Betriebssystems zusammen, welche einer optimierten Zusammenarbeit zwischen dem Betriebssystem und den Peripheriegeräten dienen.

Rolle der Geräteverwaltung

Geraeteverwaltung-1.jpgWenn Prozesse mit Peripheriegeräten kommunizieren, tätigen sie Systemaufruf
→ dadurch wird Betriebssystem mit der gewünschten Kommunikation beauftragt .

Geräteverwaltung ist Bestandteil des Betriebssystems

→ realisiert eine Schnittstelle zwischen den Peripheriegeräten und  Betriebssystem

Gerätetreiber

Gerätetreiber ist eine Softwarekomponente, welche Interaktionen zwischen BS und Controller des Peripheriegeräts steuert.

Geraeteverwaltung-2.jpg

die Geräteverwaltung enthält verschiedene Treiber mit gleichem Ablauf:
1. Initialisierung des Geräte-Controllers
2. Gerät dem Betriebssystem bekannt machen
3. Bereitstellen einer Schnittstelle zum Geräte-Controller
4. Interruptbehandlung für ein Gerät
5. Bereitstellen einer Schnittstelle zur Geräteverwaltung


Initialisierung des Geräte-Controllers

Controller-ready.jpg

Treiber initialisiert den Controller seines zugehörigen Geräts beim Systemstart
→ Damit stehen gültige Werte in  Registern des Controllers 
→ das Gerät selbst wird über seinen Controller bereit für die Entgegennahme von Befehlen


Gerät dem Betriebssystem bekannt machen

Ein Treiber macht der Geräteverwaltung des Betriebssystems das Gerät bekannt, damit kann das Gerät vom BS genutzt werden


Bereitstellen einer Schnittstelle zum Geräte-Controller

image-1663060051178.png

Treiber bildet  Schnittstelle zwischen Geräteverwaltung und Controller des Geräts
Treiber muss wissen, welche Befehle der Controller zur Verfügung stellt
wie diese anzusprechen  und in welcher Weise die Rückgabewerte zu interpretieren sind.


Interruptbehandlung für ein Gerät

Gerätetreiber ist zuständig für die Behandlung von Interrupts, die durch das zugehörige Gerät ausgelöst werden.

Kontextwechsel und ISR.jpg

Die Interruptbehandlungsroutine ist Teil des Gerätetreibers!
Der Treiber ist Teil der Geräteverwaltung, welche wiederum ein Teil des BS ist

Außer Festplatten gibt es noch viel weitere Geräte, die von der Geräteverwaltung des Betriebssystems unterstützt werden müssen, und für die ein Treiber eingebunden ist.

Lange nicht alle Geräte unterstützen den Einsatz eines DMA-Controllers!
die Interruptverarbeitung im Treiber kann unterschiedlich ablaufen: mit DMA oder kein DMA
→ 
das Interruptkonzept eine einfache Reaktionsmöglichkeit des Treibers auf die ungefragt eintreffenden Daten


Bereitstellen einer Schnittstelle zur Geräteverwaltung

image-1663060051178.pngTreiber muss auch mit der Geräteverwaltung des Betriebssystems kommunizieren
→ Er ist Mittel zwischen beiden Welten mit Geräteklassen, mit jeweils eigenen Schnittstelle.
Treiber muss von Geräteverwaltung für Geräteklasse gedachte Funktionen implementieren

Geräteklassen

Im Zuge seiner geräteunabhängigen Teile der Implementierung definiert die Geräteverwaltung des Betriebssystems unterschiedliche Geräteklassen. Zu den wichtigsten beiden Klassen gehören die blockorientierten Geräte, sowie die zeichenorientierten Geräte.


Blockorientierte Geräte

übertragen Daten jeweils in kompletten Blöcken, beim Lesen und Schreiben von diesem Gerät (zb. Festplatte)

→ Typische Blockgrößen liegen zwischen 512 und 32 768 Byte.
→ Jeder Datenblock ist direkt adressierbar.
→ BEISPIEL: Lade Datenblock Nr. 723 von Festplatte | Ändere fünfte Byte wie | Schreibe Datenblock Nr. 723 zurück auf Festplatte.
→ Es können also immer nur komplette Datenblöcke gelesen oder geschrieben werden.


Zeichenorientierte Geräte

erzeugen/empfangen Datenstrom. Zeichenfolge zum Gerät oder vom Gerät übertragen. Zeichen sind nicht adressierbar.

Beispiele für zeichenorientierte Geräte sind: Maus, Tastatur, Netzwerkkarte, ...


Schnittstelle für zeichenorientierte / blockorientierte Geräte
→ Geräteverwaltung definiert Standardschnittstelle, welche Treiber zeichenorientierten/blockorientierte Geräte unterstützen 
→ Darin vorgesehen sind beispielsweise Funktionen für: die Initialisierung des Geräts, das Lesen eines Zeichenstroms vom Gerät...
→ Diese Funktionen werden vom Gerätetreiber implementiert.


Zusammenarbeit von Treiber und Geräteverwaltung
→ ist ein zeichenorientiertes Gerät am System angeschlossen, so wird sein Treiber in den Hauptspeicher geladen
→ Der Treiber implementiert Funktionen (initDevice(), readBlock(), writeBlock(), 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. Dies gilt für jeden geladenen Treiber, also für jedes unterstützte Gerät.