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
 
  Übungen
    - UnivIS-Infos
    - Inhalt
    - Ergänzendes Material
    - Terminübersicht
    - Aufgaben
       * Umgebung
       * Typische Fehler
       * A 1
       * A 2
       * A 3
       * A 4
       * A 5
       * A 6
       * A 7
 
  Evaluation
Department Informatik  >  Informatik 4  >  Lehre  >  WS 2007/08  >  Betriebssysteme  >  Übungen  >  Aufgaben  >  Aufgabe 4  >  Klasse Coroutine

Klasse Coroutine

Einordnung in die Gesamtstruktur

Modul
thread
Basisklassen
keine
abgeleitete Klassen
Entrant
Erstellungszeitpunkt
Aufgabe 4
Dateien
coroutine.h coroutine.cc

Beschreibung

Die Klasse Coroutine stellt die Abstraktion einer Koroutine dar. Sie ermöglicht die Prozessorabgabe an eine andere Koroutine und stellt (durch die Struktur toc) Speicherplatz zur Verfügung, um die Inhalte der nicht-flüchtigen Register bis zur nächsten Aktivierung zu sichern. Außerdem sorgt sie für die Initialisierung dieser Registerwerte, damit bei der ersten Aktivierung die Ausführung an der richtigen Stelle und mit dem richtigen Stack beginnt.

öffentliche Methoden

Coroutine (void* tos);
Im Coroutinen Konstruktor werden die Registerwerte so initialisiert, dass der Stackpointer initial auf tos zeigt und bei der ersten Aktivierung die Ausführung mit der Funktion kickoff beginnt, die den this-Pointer des Coroutinenobjekts als Parameter auf dem Stack vorfinden muss.
void go ();
Diese Methode dient der ersten Aktivierung der ersten Koroutine im System. Daher müssen hier keine Registerwerte gerettet werden.
void resume (Coroutine& next);
Mit dieser Methode wird ein Koroutinenwechsel ausgelöst. Die aktuelle Belegung der nicht-flüchtigen Register wird in dem toc Element gesichert und durch die Werte von next (dem toc Element der nächsten Koroutine) ersetzt.
virtual void action () = 0;
Die Methode action stellt die eigentliche Aufgabe der Koroutine dar. Da jedoch nicht alle Koroutinen im System dasselbe tun sollen, kann action erst in einer spezialisierten Klasse (z.B. in Application) definiert werden.
  Impressum   Datenschutz Stand: 2007-11-23 08:56   AG, WH