Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03458.jsonl.gz/2038

||GUIDES UND TUTORIAL

Ein- und Ausgabegeräte
E/A-Geräte werden in der Regel in das Dateisystem eingebunden und aus Benutzersicht
wie Dateien behandelt (die u. U. von "normalen" Dateien abweichende Eigenschaften haben).
E/A-Geräte können grob in zwei Kategorien eingeteilt werden:
- Auf reine Ausgabegeräte kann nur geschrieben werden
- Von reinen Eingabegeräten kann nur gelesen werden
- Bei kombinierten E/A-Geräten kann gelesen/geschrieben werden
- blockorientierte Geräte (block devices), z. B. Platte, Band
Es verarbeitet Daten nur in Form von Datenblöcken fester Länge (Blockgrößen
zwischen 128 Byte und 8 KByte).
- zeichenorientierte Geräte (character devices), z. B. Terminal
Es verarbeitet einen Datenstrom aus einzelnen Bytes.
Einige Geräte lassen sich nicht definiert einordnen (z. B. Zeitgeber = Timer).
Zur Ansteuerung der Geräte ist systemnahe und z. T. hardwareabhängige
Software des BS notwendig. In der Regel erhält jedes Gerät einen fest
vorgegebenen Namen, unter dem es dann wie eine Datei angesprochen werden kann.
Je nach Typ können Geräte gemeinsam von allen Prozessen verwendet werden
(z. B. Platte) oder sie sind exclusiv für einen Prozeß reserviert (z.
B. Plotter). Die Software zur Ansteuerung von Geräten läßt sich in
zwei Ebenen strukturieren:
- Gerätetreiber
BS-Programmteil für den geräteabhängigen Code. Hier sind alle Prozeduren
vereinigt, die in irgend einer Weise hardwarespezifisch sind. Siehe unten:
Gerätesteuerung.
- Geräteunabhängige Software des Betriebssystems
In dieser Schicht wird die Schnittstelle zum Dateisystem realisiert. Sie enthält
eine einheitliche Schnittstelle zum Treiber, den Gerätenamen, Pufferung der
Daten, Schutz der Geräte, Vergabe exklusiver Geräte und Fehlerbehandlung.
Gerätesteuerung
Die Peripheriegerätesteuerung erfolgt auf der Hardware-Ebene über den Austausch
von Statussignalen und Daten zwischen den angeschlossenen Geräten und dem Prozessor.
Die Programme zur Steuerung von Peripheriegeräten werden Treiber (driver, handler)
genannt. Die Komplexität der Steuerungsaufgaben ist weitgehend vom Geräteverhalten
abhängig.
Alle drei Methoden des Signal- und Datenaustausches können zum Einsatz kommen
(programmgesteuert, interruptgesteuert, DMA).
- Programmgesteuerte Ein-/Ausgabe
Im einfachsten Fall sind alle Grundfunktionen der Ein-/Ausgabe vollständig in
die Treiberprogramme integriert. Bei der Durchführung einer Datenübertragung
oder einer Steuerfunktion muß der Prozessor dann bis zu deren Beendigung explizit
warten, bevor er die Bearbeitung weiterer Programmschritte aufnehmen kann.
- Unterbrechungsgesteuerte Ein-/Ausgabe
Damit der Prozessor nicht durch unnötige Wartezeiten und Statusabfragen
zeitlich belastet wird, erfolgt die Gerätesteuerung i. a. unter Verwendung von
Unterbrechnungen. Beispiel:
Die Unterbrechungsignale verschiedener Geräte sollten unterschiedliche Prioritäten
haben, um die dringlichen Aufgaben vorrangig bearbeiten zu können.
- Tastendruck am Terminal erzeugt Unterbrechung;
- das entsprechende Interrupt-Service-Programm liest das Zeichen vom Empfangsport
der seriellen Schnittstelle und speichert es in einem Zwischenpuffer (Puffer für
eine Zeile).
- Falls das Betriebssystem auf die Eingabe eines Kommandos wartet (ein entspr.
Parameter wurde von höheren BS-Schichten an den Treiber übergeben), wird gleich
geprüft, ob das Zeichen CR (Carriage Return = Eingabeende) eingetroffen ist (in
einem Textverarbeitungsprogramm muß diese Sonderbehandlung des CR
ausgeschaltet sein!).
- Falls das CR erkannt wird, veranlaßt das Interrupt-Service-Programm
eine Meldung (z. B. per Mailbox) an ein hierarchisch höher liegendes
Auswerteprogramm, das den Inhalt des eingegebenen Textes analysiert, um - wieder
eine Ebene höher - z. B. die gewünschte Betriebssystem-Funktion zu starten.
- DMA-Betrieb
Um den Prozessor von ständig zu wiederholenden Formen der Datenübertragung
(großer Datenmengen) zu entlasten, wurde das Verfahren des direkten
Speicherzugriffs (direct memory access, DMA) entwickelt.
Die Datenübertragung zwischen dem Hauptspeicher und einem Peripheriegerät
wird vollständig von der DMA-Steuerung durchgeführt, und die Transferrate
wird durch die Geschwindigkeitsanforderungen des beteiligten Geräts oder
(seltener) durch die Länge der Speicherzyklen bzw. die Übertragungskapazität
des Busses bestimmt.