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 2012/13  >  Betriebssysteme  >  Übungen  >  Aufgaben  >  Aufgabe 4

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

#include <coroutine.h>

Klassendiagramm fĂĽr Coroutine:

Ă–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
tosTop of Stack, also die höchste Adresse des Speicherbereiches, der als Stack für diese Koroutine fungieren soll.

Dokumentation der Elementfunktionen

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 Loop, Application und DummyProcess.

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
nextZeiger auf die nächste Koroutine, die laufen soll.

Die Dokumentation fĂĽr diese Klasse wurde erzeugt aufgrund der Dateien:
  Impressum   Datenschutz Stand: 2012-12-05 15:45   BO, DL