Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung


'Wie werde ich Unix-Guru' als Buch bestellen
A. Willemer
Wie werde ich UNIX-Guru
I  ANWENDUNG
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.

II  ADMINISTRATION
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel

III  NETZWERK
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls

IV  DAS X-WINDOW SYSTEM
Die grafische Oberfläche von UNIX einrichten und nutzen

V  PROGRAMMIERUNG VON SHELLSKRIPTEN
Automatisieren von Tasks durch Shell-Skripte.

VI  PERL
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk

VII  PROGRAMMIERWERKZEUGE
C-Compiler, Analyse-Tools, CVS, yacc, diff

VIII  UNIX-SYSTEMAUFRUFE
UNIX-Befehle in eigenen Programmen nutzen

IX  LITERATUR
Weiterführende Literatur zu UNIX und LINUX

 
Galileo Computing / <openbook> / "Wie werde ich UNIX-Guru ?"
« Aufgaben eines Treibers Hardwarezugriff unter UNIX: /dev Umgang mit Gerätedateien »

Gerätedateien

Die 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 ioctl() erreicht. Damit können Programme unter UNIX den Treiber direkt ansprechen. Um mit dem Treiber zu korrespondieren, muss der Befehlssatz des Treibers natürlich bekannt sein. Die Funktion bleibt sowohl dem Anwender und meist sogar dem Anwendungsprogrammierer verborgen.

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 xterm entstehen.

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.



« Aufgaben eines Treibers | Hardwarezugriff unter UNIX: /dev | Umgang mit Gerätedateien »
 
 Zum Katalog
Zum Katalog
Wie werde ich UNIX-Guru?
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 UNIX/Linux

PHP 4-Workshop

Einstieg in Python

Perl fürs Web

MySQL 4

GNOME 2.0
 Empfehlung

Einstieg in XML
 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info

 MyGalileo
Der Service für registrierte Leser:
Zu MyGalileo
Info



Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de