|
|
GerätedateienDie für den Benutzer sichtbare Schnittstelle des Treibers ist die Gerätedatei, die im Verzeichnis /dev liegt. Dabei handelt es sich keineswegs um eine gewöhnliche Datei. Man kann Gerätedateien sowohl lesen als auch schreiben. Die Lese- und Schreibkommandos gehen dann als solche an den zuständigen Treiber. Er wird die Daten an »sein« Gerät weiterleiten und die entsprechende Registeransteuerung durchführen. Einem Anwender werden diese Schnittstellen normalerweise nicht zugänglich gemacht, weil beispielsweise der Plattentreiber nur Blöcke von und zur Festplatte transportieren kann, aber keine Ahnung von Dateien oder Verzeichnissen hat. Der naive Zugriff auf diese Schnittstelle könnte also die Struktur der Festplatte völlig durcheinander bringen.
Neben dem Schreiben und Lesen ist es auch nötig, das Gerät in spezifischer Art
zu steuern. Dies wird über den Systemaufruf Die Gerätedatei enthält nur wenige Informationen. Zuerst enthält sie die Information, welcher Treiber für sie zuständig ist. Die Treiber des Systems sind durchnummeriert. Diese Nummer wird in der Gerätedatei als major number abgelegt. Gerätedateien, die die gleiche major number haben, interagieren mit dem Betriebssystem also über den gleichen Treiber. Entsprechend handelt es sich dabei um ähnliche Geräte. Es ist keineswegs zwingend, dass eine unterschiedliche major number auch ein anderes Gerät bezeichnet. So verwenden viele UNIX-Systeme für jede serielle Schnittstelle mehrere Gerätenummern. Der Unterschied liegt nicht im Gerät, sondern im Treiber. Mit dem einen Treiber wird über die serielle Schnittstelle auf ein Terminal zugegriffen, mit dem anderen Treiber wird die Kommunikation mit einem Modem realisiert, und ein weiterer Treiber könnte beispielsweise Messgeräte steuern, die einen seriellen Anschluss haben. Da ein Treiber natürlich mehrere Geräte gleicher Bauart bedienen kann, wird eine weitere Kennung benötigt, um diese voneinander zu unterscheiden. Zu diesem Zweck enthält die Gerätedatei noch eine weitere Nummer, die so genannte minor number. Bei einem Zugriff auf die Gerätedatei wird diese Nummer an den Treiber weitergegeben. So ist es für den Treiber erkennbar, welche Platte oder welches Terminal angesprochen werden soll. Eine Information über den Gerätecharakter wird nicht vom Treiber verborgen, sondern in der Gerätedatei mitgeliefert. Sie gibt an, ob es sich um ein Gerät mit einem blockweisen oder zeichenweisen Zugriff handelt. So ist ein Terminal zeichenorientiert, eine Festplattenpartion oder eine Diskette blockorientiert. Der Hauptunterschied besteht darin, dass ein blockorientiertes Gerät einen Puffer hat, der erst einmal aufgefüllt werden muss. Dann wird der Datenblock als Ganzes an den Treiber geschickt. Blöcke haben beim Datentransfer ein besseres Verhältnis zwischen Nutzdaten und Protokolldaten und sind dadurch viel schneller. Zeichenorientierte Geräte liefern und bekommen ihre Daten byteweise und reagieren darum zeitnah, weil nicht gewartet werden muss, bis ein Block voll ist. Für manche Geräte existieren beide Arten von Einträgen. Diese Möglichkeit wird eingesetzt, um einerseits einen schnellen Blocktransfer zu gewährleisten, auf der anderen Seite aber einen zeitnahen Zugriff auf die Steuerung des Gerätes zu ermöglichen.
Nicht alle Einträge im Verzeichnis /dev sind tatsächlich mit einer
Hardware verbunden. Beispielsweise bezeichnen pty virtuelle Konsolen,
die durch das Starten des Programms Eine besondere Variante eines virtuellen Gerätes ist /dev/null. Dieses Gerät verwendet man, wenn störende Ausgaben beseitigt werden müssen. Man leitet sie dann dorthin um.
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|