[gesichtete Version] | [gesichtete Version] |
Kwastg (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
|||
(23 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
<loop_index>Gerät, zeichenorientiert | <loop_index id="5fa9788bdcf03">Gerät, zeichenorientiert</loop_index><loop_index id="5fa9788ce61aa">Zeichenorientiertes Gerät</loop_index><loop_index id="5fa9788ce61b7">character device</loop_index><loop_index id="5fa9788ce61c0">Stream, character device</loop_index> | ||
<p> | <p> | ||
Zeichenorientierte Geräte (engl. character device) erzeugen oder empfangen einen Datenstrom (engl. stream) | Zeichenorientierte Geräte (engl. character device) erzeugen oder empfangen einen Datenstrom (engl. stream). Eine Folge von Zeichen (evtl. auch nur ein einzelnes Zeichen) wird hierbei zum Gerät oder vom Gerät übertragen. Diese Zeichen sind nicht adressierbar. | ||
</p> | </p> | ||
Zeile 9: | Zeile 9: | ||
* Maus | * Maus | ||
* Tastatur | * Tastatur | ||
* Netzwerkkarte | |||
* Geräte, die über die parallele Schnittstelle abgeschlossen sind | * Geräte, die über die parallele Schnittstelle abgeschlossen sind | ||
* Geräte, die über die serielle Schnittstelle abgeschlossen sind | * Geräte, die über die serielle Schnittstelle abgeschlossen sind | ||
* Geräte, die über eine USB-Schnittstelle abgeschlossen sind | * Geräte, die über eine USB-Schnittstelle abgeschlossen sind | ||
</p> | </p> | ||
<br /> | |||
== Schnittstelle für zeichenorientierte Geräte == | |||
<p> | |||
Die Geräteverwaltung definiert üblicherweise eine Standardschnittstelle, welche die Treiber aller zeichenorientierten Geräte unterstützen müssen. Darin vorgesehen sind beispielsweise Funktionen für | |||
* die Initialisierung des Geräts, | |||
* das Lesen eines Zeichenstroms vom Gerät, sowie | |||
* das Schreiben eines Zeichenstroms zum Gerät, sowie | |||
* die Behandlung eines vom Geräte-Controller ausgelösten Interrupts. | |||
</p> | |||
<p> | |||
Diese Funktionen werden [[Bereitstellen einer Schnittstelle zur Geräteverwaltung|vom Gerätetreiber implementiert]]. | |||
</p> | |||
<br /> | |||
== Zusammenarbeit von Treiber und Geräteverwaltung == | |||
<p> | |||
Ist ein zeichenorientiertes Gerät am System angeschlossen, so wird sein Treiber (z.B. beim Systemstart) in den Hauptspeicher geladen. Der Treiber implementiert (u.a.) die Funktionen | |||
* initDevice(), | |||
* readChar(), | |||
* writeChar(), sowie | |||
* handleInterrupt(). | |||
</p> | |||
<p> | |||
Durch das Laden des Treibers in den Hauptspeicher steht ab diesem Moment fest, ab welcher Adresse im Hauptspeicher der ausführbare Code der genannten Funktionen beginnt. Dies gilt für jeden geladenen Treiber, also für jedes unterstützte Gerät. | |||
</p> | |||
<br /> | |||
== Beispiel für Maus und Netzwerkkarte == | |||
<loop_area type="example"> | |||
<p> | |||
Zum Beispiel für die Maus | |||
* ab Adresse 10 240 <math>\rightarrow</math> initDevice() | |||
* ab Adresse 10 752 <math>\rightarrow</math> readChar() | |||
* ab Adresse 11 776 <math>\rightarrow</math> writeChar() | |||
* ab Adresse 12 888 <math>\rightarrow</math> handleInterrupt() | |||
</p> | |||
<p> | |||
und für die Netzwerkkarte | |||
* ab Adresse 13 312 <math>\rightarrow</math> initDevice() | |||
* ab Adresse 14 336 <math>\rightarrow</math> readChar() | |||
* ab Adresse 15 360 <math>\rightarrow</math> writeChar() | |||
* ab Adresse 16 384 <math>\rightarrow</math> handleInterrupt() | |||
</p> | |||
<p> | |||
und so fort für jeden weiteren Treiber eines zeichenorientierten Geräts. | |||
</p> | |||
</loop_area> | |||
<br /> | |||
<p> | |||
Die Geräteverwaltung wird über die Startadressen der implementierten Funktionen informiert und verwaltet diese entsprechend für alle unterstützten zeichenorientierten Geräte. Ab diesem Moment steht das Gerät für die Nutzung durch die Geräteverwaltung, durch das Betriebssystem und/oder einen Prozess zur Verfügung. | |||
</p> | |||
<br /> | |||
== Aufgabe 1 == | |||
<loop_area type="task"> | |||
<loop_task title="Ein Mausklick und die Folgen" id="5fa9788bdcf0f"> | |||
<p> | |||
Angenommen: Auf einem Betriebssystem wird ein Textverarbeitungsprozess ausgeführt. Der Benutzer gibt seinen Text ein, greift zur Maus und klickt einmal mit der linken Maustaste auf die Schaltfläche "Fett" in der Textverarbeitung. | |||
</p> | |||
<p> | |||
Was passiert im Controller, im Treiber, in der Geräteverwaltung, im Betriebssystem und im Textverarbeitungsprozess als Reaktion auf den Mausklick?<br /> | |||
<small>Orientiere dich an dem [[Blockorientierte_Geräte#Ein_Praxisbeispiel|Praxisbeispiel im Abschnitt Blockorientierte Geräte]].</small> | |||
</p> | |||
<spoiler text="Der Anfang einer Lösung"> | |||
<p> | |||
Deine Lösung zu dieser Aufgabe könnte beginnen mit: | |||
* Der Textverarbeitungsprozess wird auf der CPU ausgeführt. | |||
* Plötzlich klickt der Benutzer einmal mit der linken Maustaste auf die Schaltfläche "Fett". | |||
* . . . <small>(<math>\leftarrow</math> Was löst der Mausklick aus?)</small> | |||
* . . . | |||
</p> | |||
</spoiler> | |||
</loop_task> | |||
</loop_area> | |||
<br /> | |||
== Aufgabe 2 == | |||
<loop_area type="task"> | |||
<loop_task title="Hier schreibt die Maus" id="5fa9788bdcf27"> | |||
<p> | |||
Wie wird die writeChar()-Funktion für die Maus wohl implementiert sein? | |||
</p> | |||
</loop_task> | |||
</loop_area> | |||
<div class="autoit_do_not_print"> | <div class="autoit_do_not_print"> |
Zeichenorientierte Geräte (engl. character device) erzeugen oder empfangen einen Datenstrom (engl. stream). Eine Folge von Zeichen (evtl. auch nur ein einzelnes Zeichen) wird hierbei zum Gerät oder vom Gerät übertragen. Diese Zeichen sind nicht adressierbar.
Beispiele für zeichenorientierte Geräte sind:
Die Geräteverwaltung definiert üblicherweise eine Standardschnittstelle, welche die Treiber aller zeichenorientierten Geräte unterstützen müssen. Darin vorgesehen sind beispielsweise Funktionen für
Diese Funktionen werden vom Gerätetreiber implementiert.
Ist ein zeichenorientiertes Gerät am System angeschlossen, so wird sein Treiber (z.B. beim Systemstart) in den Hauptspeicher geladen. Der Treiber implementiert (u.a.) die Funktionen
Durch das Laden des Treibers in den Hauptspeicher steht ab diesem Moment fest, ab welcher Adresse im Hauptspeicher der ausführbare Code der genannten Funktionen beginnt. Dies gilt für jeden geladenen Treiber, also für jedes unterstützte Gerät.
Zum Beispiel für die Maus
und für die Netzwerkkarte
und so fort für jeden weiteren Treiber eines zeichenorientierten Geräts.
Die Geräteverwaltung wird über die Startadressen der implementierten Funktionen informiert und verwaltet diese entsprechend für alle unterstützten zeichenorientierten Geräte. Ab diesem Moment steht das Gerät für die Nutzung durch die Geräteverwaltung, durch das Betriebssystem und/oder einen Prozess zur Verfügung.
Angenommen: Auf einem Betriebssystem wird ein Textverarbeitungsprozess ausgeführt. Der Benutzer gibt seinen Text ein, greift zur Maus und klickt einmal mit der linken Maustaste auf die Schaltfläche "Fett" in der Textverarbeitung.
Was passiert im Controller, im Treiber, in der Geräteverwaltung, im Betriebssystem und im Textverarbeitungsprozess als Reaktion auf den Mausklick?
Orientiere dich an dem Praxisbeispiel im Abschnitt Blockorientierte Geräte.
Wie wird die writeChar()-Funktion für die Maus wohl implementiert sein?
Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png