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

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 IdleThread und Application.


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