Geräte unter Linux
Von: D.F.
Von: D.F.
-
- 1 / 19
-
Lernkarten
Was ist eine der wichtigsten Aufgaben eines Betriebsystem?
Zu den wichtigsten Aufgaben eines Betriebssystems gehört die Kontrolle von Ein-/Ausgabe-Geräten (I/O-Devices)
Es gibt zwei klassen von I/O-Geräten, nenne diese und beschreibe sie kurz, gebe auch Beispiele?
- Blockorientierte Geräte (Block Devices)
- Daten werden blockweise (512 Byte – 32kB) transferiert
- Blöcke sind adressierbar, gezielter Zugriff auf Daten in einem bestimmten Block ist möglich
- Beispiele: Festplatten, CD's, …
- Zeichenorientierte Geräte (Character Devices)
- Daten werden zeichenweise transferiert
- Keine Möglichkeit, gezielt auf bestimmte Daten zuzugreifen
- Beispiele: Maus, Tastatur, Drucker, …
Wie ist der Zusammenhang zwischen Geräten und Adaptern, mit was ist die CPU in direkter Verbindung?
- Adapter (Device Controller)
- Stellen die Verbindung zwischen der CPU und dem eigentlichen Gerät dar
- Das Betriebssystem hat in der Regel nur mit den Adaptern zu tun, nicht mit den Geräten selbst
- Physikalisch sind Adapter meist Steckkarten, die über einen Systembus (z.B. PCI) mit der CPU verbunden sind
Wie wird mit einem Adapter Komuniziert, welche "Kanäle" stehen zur verfügung?
Wie kommuniziert die CPU mit dem Port Registern?
(3 verschiedene Möglcihkeiten)
- jeder Port hat eine eigene Portadresse und wird über spezielle CPU-Instruktionen angesprochen
- Ports und Puffer-Speicher sind Teil des allgemeinen Adressraumes ("Memory mapped I/O")
- Meist am oberen Ende angesiedelt
- dritte Variante (Hybrid-System), z.B. bei Intel x86:
- Ports bilden einen eigenen Adressraum (16 Bit)
- Für Pufferspeicher ist der Adressraum zwischen 640 kB und 1 MB reserviert
Was sind die Vorteile von Memory Mapped I/O ?
(3 Punkte)
- Portadressen sind ganz normale Speicheradressen
- » Können mit denselben CPU-Instruktionen bearbeitet werden wie "normaler" Speicher
- » Gerätetreiber können deshalb komplett in "C" geschrieben werden
- Portadressen sind Teil des virtuellen Speichers von Prozessen
- Schutz der Ports vor Prozessen: Sperren bestimmter Speicherbereiche
Was sind die Nachteile von Memory Mapped I/O?
- Speicherinhalte werden üblicherweise im Cache zwischengespeichert
- Für Ports fatal
- Lösung: Ausnehmen bestimmter Speicherbereiche (höhereKomplexität von Hard- und Software
- Die I/O-Geräte müssen jeden Speicherzugriff mitbekommen, um herauszufinden, ob sie angesprochen sind, oder nicht. (Aufwand für Hardware)
Welche 2 Bus-Architekturen gibt es, nenne Funktion und Vor-/Nachteile?
- Ein Bus:
- Alle Speicherzugriffe werden von allen angeschlossenen Geräten registriert
- Konzeptionell einfach, aber potenziell langsam (Geräte mussen alle mit der hohen geschwindigkeit zurecht kommen)
- Zwei Busse
- (z.B. bei IA32): Zugriffe auf Speicher und I/O Geräte sind getrennt
- Schneller, aber auch komplizierter zu realisieren
Wleches Probleme ergibt sich mit der Zwei-Bus-Architektur?
Wie werden Speicherzugriffe auf Hauptspeicher und I/O-Geräte unterschieden? (gleicher Addresraum)
- Alle Zugriffe gehen über den Speicherbus und erst im Fehlerfall auf den I/O-Bus (zusätzliche Hardware)
- Ein "Spion" lauscht für alle Geräte auf dem Speicherbus (I/O-Geräte werden u.U. von der Datenflut überfordert)
- Ein "Brücken-Chip" weiß, welche Adressen nicht im Speicher sind und leitet nur diese Anfragen an die I/O-Geräte weiter (geläufig)
Was macht die North- und Southbridge?
Wie läuft ein Festplatten-Zugriff ohne DMA ab?
(3 Schritte)
Wie läuft ein Festplattenzugriff mit DMA ab?
Kurze Erklärung zu DMA:
DMA (Direct Memory access) ermöglicht es Daten von Geräten in den Hauptspeicher zu kopieren ohne dabei die CPU zu Belasten, der BUS is in diesr Zeit für die CPU gesperrt.
- Die CPU programmiert den DMA-Controller
- Die CPU veranlasst den Disk-Controller, einen Block von Platte zu lesen
- Der DMA-Controller veranlasst den Transfer der Daten aus dem Puffer des Disk-Controllers in den Hauptspeicher
- Wenn der Transfer komplett ist, schickt der DMA-Controller einen Interrupt an die CPU
Systembusse und DMA-Controller unterstützen oft zwei unterschiedliche Modi, nenne und beschreibe diese?
- Cycle Stealing
- Der DMA-Controller blockiert den Bus, fordert Daten wortweise an und gibt den Bus wieder frei. So lange der DMA-Controller den Bus benutzt, muss die CPU warten
- Burst Mode:
- Der DMA-Controller blockiert den Bus und transferiert einen ganzen Block von Daten.
- Vorteil: Höhere Transferrate
- Nachteil: Der Bus bleibt länger für die CPU blockiert
- Der DMA-Controller blockiert den Bus und transferiert einen ganzen Block von Daten.
Welche Argumente sprehcen gegen einem DMA?
- Die CPU ist oft schneller als der DMA Controller, der Transfer wird also langsamer statt schneller
- Wenn keine anderen Aufgaben anliegen, bremst der DMA Controller u.U. die CPU aus
- DMA-Controller kosten Geld
Bei kleinen, billigen Computersystemen (z.B. Embedded Systems) wird in der Regel kein DMA verwendet
Welche 3 Wege gibt es I/O zu Programmieren?
- Programmierte I/O: Die CPU kontrolliert die Routine vollständig
- Konzeption einfach, CPU wird stark belastet, nicht besonders Perfomant
- Interrupt-gesteuerte I/O: Die CPU erteilt einem Controller eine Anweisung und wird erst wieder eingeschaltet, wenn der Transfer erledigt ist
- perfomanter, komplizierter, oft nicht zu vermeiden
- DMA I/O: Ähnlich wie programmierte I/O, nur dass der DMA-Controller die Kontrolle übernimmt
Was ist die Aufgabe eines Gerätetreibers?
- Eigentlich: Adapter-Treiber (Hat mit dem Gerät selber ja nichts zu tun)
- Gehören zu einer bestimmten Hardware bzw. Hardwareklasse
- Greifen auf die Ports bzw. den Pufferspeicher der Adapter zu
- Müssen Teil des Kernels sein
- Der Kernel muss vorsehen, Treiber für neue Hardware zu integrieren
Wie können Gerätetreiber in den Kernel eingebunden werden?
(Monolithischer Kernel, Modularisierter Kernel, Microkernel)
- Monolithischer Kernel
- Kernel muss neu Compiliert werden um neuen Treiber einzubinden
- Modularisierter Kernel
- Treiber werden als module in den Kernel geladen und auch im Kernelmode ausgeführt => System potentiell instabil
- Micro Kernel
- Treiber laufen als Dienste im Usermode => Potentielle Performance verluste (Oft nicht relevant)
Ist die UNIX Standartphilosopie auch für geräte Gültig?
- JA - Alle Geräte (Adapter) sehen wie Dateien aus, in diegeschrieben bzw. aus denen gelesen werden kann
- Der einfachste Druckbefehl wäre: cp file.ps /dev/lp
- Gerätedateien sind entweder
- blockorientiert ("block special files")
- zeichenorientiert ("character special files")