Systemaufrufschnittstelle zur Geräteansteuerung in Unix

  • Geräteunabhängigkeit
  • Geräte über spezielle Dateien (special files) ansprechen
    • mknod() (⇒ Erzeugen der Gerätedatei)
    • open() / close() (⇒ Anmelden/Reservieren bzw. Abmelden)
    • read() / write()
  • Ermöglicht Namen, vereinfacht Ein-/Ausgabeumlenkung

Kern-intern:

  • open(): im Prinzip wie bei normaler Datei
    • Erzeugt Eintrag in Deskriptor-Tabelle des Prozesses (liefert fd zurück)
    • Erzeugt Eintrag in File-Tabelle
    • Liest Inode der Gerätedatei von Platte (⇒ Inode-Tabelle)
  • Inode enthält keine Blocknummern sondern:
    • Major Number: Gerätetyp
    • Minor Number: Konkretes Exemplar von Gerät diesen Typs

Über Major Number Zugriff auf Gerätetreiber

⇒ indiziert Device Switch Table (Block vs. Character Devices)
⇒ Verweise auf Zugriffsoperationen

Grobe Unterscheidung:

  • Blockgerätetreiber:
    • open()
    • close()
    • strategy() (Eine Routine für read()/write() + Richtungsparameter)
  • Charactergerätetreiber
    • open()
    • close()
    • read()
    • write()
    • ioctl() (Parametrisierung des Gerätetreibers)

Überblick

Read / Write im Gerätetreiber

Aufgaben des Gerätetreibers


Terminal-Treiber


Link to original