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
       * 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 2009/10  >  Betriebssysteme  >  Ãœbungen  >  Aufgaben  >  Aufgabe 4

Coroutine Klassenreferenz

Die Klasse Coroutine stellt die Abstraktion einer Koroutine dar. Mehr ...

#include <coroutine.h>

Klassendiagramm für Coroutine:
Zusammengehörigkeiten von Coroutine:

Aufstellung aller Elemente

Öffentliche Methoden

 Coroutine (void *tos)
 Konstruktor;.
void go ()
 Aktiviert die erste Koroutine auf einem Prozessor.
void resume (Coroutine &next)
 Wechsel von der aktuell laufenden Koroutine zur nächsten.
virtual void action ()=0
 Methode, die als Koroutine ausgeführt werden soll.
void set_kill_flag ()
 Setzen des Kill-Flags. Prozess wechselt in den Zustand sterbend. Wird nur für MPStuBS benötigt.
void reset_kill_flag ()
 Zurücksetzen des Kill-Flags. Prozess ist damit gestorben. Wird nur für MPStuBS benötigt.
bool dying ()
 Abfragen des Kill-Flags. Nachschauen, ob der Prozess gerade stirbt. Wird nur für MPStuBS benötigt.


Ausführliche 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.


Beschreibung der Konstruktoren und Destruktoren

Coroutine::Coroutine ( void *  tos  ) 

Konstruktor;.

Initialisiert den Kontext mit Hilfe von toc_settle

Parameter:
tos Top of Stack, also die höchste Adresse des Speicherbereiches, der als Stack für diese Koroutine fungieren soll.


Dokumentation der Elementfunktionen

void Coroutine::go (  ) 

Aktiviert die erste Koroutine auf einem Prozessor.

Durch den Aufruf von Coroutine::go() wird die erste Koroutine auf dem jeweiligen Prozessor gestartet. Alle weiteren Koroutinenwechsel sollen dann mit Hilfe der Methode Coroutine::resume() ausgeführt werden.

void Coroutine::resume ( Coroutine next  ) 

Wechsel von der aktuell laufenden Koroutine zur nächsten.

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.

Parameter:
next Zeiger auf die nächste Koroutine, die laufen soll.

virtual void Coroutine::action (  )  [pure virtual]

Methode, die als Koroutine ausgeführt werden soll.

Abgeleitete Klassen können durch Überschreiben dieser Methode den Code angeben, der als Koroutine ausgeführt werden soll.

Implementiert in Application und Loop.


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
  Impressum   Datenschutz Stand: 2010-07-19 12:33   BO, DL