Friedrich-Alexander-Universität UnivisSuche FAU-Logo
Techn. Fakultńt Willkommen am Department Informatik FAU-Logo
Logo I4
Lehrstuhl für Informatik 4
Betriebssysteme
 
  Vorlesung
    - UnivIS-Infos
    - Inhalt
    - Folien
    - Videos
 
  Übungen
    - UnivIS-Infos
    - Inhalt
    - Module
    - Mailingliste
    - Ergänzendes Material
    - Terminübersicht
    - Aufgaben
       * Umgebung
       * Typische Fehler
       * Aufgabe 1
          Dokumentation
       * Aufgabe 2
          Dokumentation
       * Aufgabe 3
          Dokumentation
       * Aufgabe 4
          Dokumentation
       * Aufgabe 5
          Dokumentation
       * Aufgabe 6
          Dokumentation
       * Aufgabe 7
          Dokumentation
 
  Evaluation
Department Informatik  >  Informatik 4  >  Lehre  >  WS 2011/12  >  Betriebssysteme  >  Übungen  >  Aufgaben  >  Aufgabe 6

Keyboard Klassenreferenz

Die Klasse Keyboard stellt die Abstraktion der Tastatur dar. Mehr ...

#include <keyboard.h>

Klassendiagramm f├╝r Keyboard:
Zusammengeh├Ârigkeiten von Keyboard:

Aufstellung aller Elemente

├ľffentliche Methoden

 Keyboard ()
 Konstruktor; Initialisiert Semaphore mit 0.
void plugin ()
 'Anst├Âpseln' der Tastatur.
bool prologue ()
 Prolog der Tastaturunterbrechung.
void epilogue ()
 Epilog der Tastaturunterbrechung.
Key getkey ()
 Schnittstelle f├╝r Anwendungen, um Zeichen von der Tastatur zu lesen.


Ausf├╝hrliche Beschreibung

Die Klasse Keyboard stellt die Abstraktion der Tastatur dar.

Sie sorgt f├╝r die korrekte Initialisierung und vor allem f├╝r die Unterbrechungsbehandlung. Sp├Ąter wird Keyboard auch die Tastaturabfrage durch die Anwendung erm├Âglichen.


Dokumentation der Elementfunktionen

void Keyboard::plugin (  ) 

'Anst├Âpseln' der Tastatur.

Initialisierung der Tastatur und aktivieren der spezifischen Interruptbehandlung. Dazu muss sich das Keyboard Objekt bei der Plugbox plugbox anmelden und dem IOAPIC Objekt ioapic mitteilen, dass Unterbrechungen der Tastatur fortan dem Prozessor gemeldet werden sollen.

bool Keyboard::prologue (  )  [virtual]

Prolog der Tastaturunterbrechung.

Mit dieser Methode wird auf die Unterbrechungen durch die Tastatur reagiert. Da bei jedem Tastendruck mehrere Unterbrechungen ausgel├Âst werden, ist nicht in jedem Fall mit einem verwertbaren ASCII Code zu rechnen. Nur wenn die Methode key_hit der Basisklasse Keyboard_Controller einen g├╝ltigen Key liefert, konnte ein vollst├Ąndiger Scancode ermittelt werden. F├╝r "normale" Tasten existiert dann auch ein ASCII Code ungleich Null.

Es soll die Ausf├╝hrung eines Epilogs angefordert werden.

Implementiert Gate.

void Keyboard::epilogue (  )  [virtual]

Epilog der Tastaturunterbrechung.

In dieser Methode soll das Auftreten des Tastendrucks einem eventuell wartenden Prozess signalisiert werden. Dazu wird ein Semaphor verwendet, dessen Z├Ąhler angibt, wieviele Tastaturcodes im Keyboard Puffer zur Abholung bereitstehen. Wenn ein Puffereintrag ├╝berschrieben werden muss, ohne dass der alte Wert von einem Anwendungsprozess abgefragt wurde, darf der Semaphor also nicht hochgez├Ąhlt werden.

Erneute Implementation von Gate.

Key Keyboard::getkey (  ) 

Schnittstelle f├╝r Anwendungen, um Zeichen von der Tastatur zu lesen.

Diese Methode liefert die zuletzt gedr├╝ckte Taste (als Objekt der Klasse Key) zur├╝ck. Wenn gerade keine Taste gedr├╝ckt wurde, wird der aufrufende Anwendungsprozess solange blockiert. Dies wird durch die Verwendung eines Semaphors erreicht. Sobald der Tastencode abgeholt worden ist, sollte geeignet vermerkt werden, dass der verwendete Puffer nun f├╝r den n├Ąchsten Tastencode zur Verf├╝gung steht.

Erneute Implementation in Guarded_Keyboard.


Die Dokumentation f├╝r diese Klasse wurde erzeugt aufgrund der Dateien:
  Impressum   Datenschutz Stand: 2012-01-27 00:40   BO, DL