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 6

Ein Organizer ist ein spezieller Scheduler, der zusätzlich das Warten von Prozessen (Customer) auf Ereignisse erlaubt. Mehr ...

#include <organizer.h>

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

Öffentliche Methoden

void block (Customer &customer, Waitingroom &waitingroom)
 Mit dieser Methode kann sich der laufende Prozess selbst blockieren.
void wakeup (Customer &customer)
 Mit dieser Methode kann ein schlafender Prozess geweckt werden.
void kill (Customer &customer)
 Mit dieser Methode kann ein Prozess einen anderen beenden.
- Öffentliche Methoden geerbt von Scheduler
 Scheduler ()
 Konstruktor.
void schedule ()
 Starten des Schedulings.
void ready (Entrant &that)
 Anmelden eines Prozesses zum Scheduling.
void exit ()
 Selbstbeenden des aktuellen Prozesses.
void kill (Entrant &that)
 Beenden eines beliebigen Prozesses.
void resume ()
 Auslösen eines Prozesswechsels.
void set_idle_thread (int cpuid, Entrant *thread)
 Setzt einen dedizierten Idle-Thread für die entsprechende CPU.
void sleep_until_IRQ ()
 Legt den aktuellen Prozessor schlafen, solange keine Prozesse vorhanden sind.
- Öffentliche Methoden geerbt von Dispatcher
 Dispatcher ()
 Konstruktor.
Coroutineactive ()
 Hiermit kann abgefragt werden, welche Koroutine gerade im Besitz des aktuellen Prozessors ist.
void go (Coroutine &first)
 Mit dieser Methode wird die Koroutine first im Life-Pointer des aktuellen Prozessores vermerkt und gestartet.
void dispatch (Coroutine &next)
 Diese Methode setzt den Life-Pointer des aktuellen Prozessors auf next und führt einen Koroutinenwechsel vom alten zum neuen Life-Pointer durch.

Ausführliche Beschreibung

Ein Organizer ist ein spezieller Scheduler, der zusätzlich das Warten von Prozessen (Customer) auf Ereignisse erlaubt.

Dokumentation der Elementfunktionen

void Organizer::block ( Customer customer,
Waitingroom waitingroom 
)

Mit dieser Methode kann sich der laufende Prozess selbst blockieren.

Er gibt also den Prozessor an den nächsten lauffähigen Prozess ab. Außerdem vermerkt er, auf welches Ereignis (in welchem Wartezimmer) er nun wartet.

Parameter
customerProzess, der sich selbst blockieren möchte.
waitingroomWartezimmer, in welchem der Prozess warten möchte.
void Organizer::kill ( Customer customer)

Mit dieser Methode kann ein Prozess einen anderen beenden.

Steht der Prozess customer auf der Ready-Liste, dann kann Scheduler::kill() verwendet werden. Wartet er dagegen auf ein Ereignis, so muss er von dessen Liste (also aus dem Wartezimmer) heruntergenommen werden.

Parameter
customerProzess, der beendet werden soll.
void Organizer::wakeup ( Customer customer)

Mit dieser Methode kann ein schlafender Prozess geweckt werden.

Das heißt, dass er wieder auf die Ready-Liste gesetzt wird. Dabei sollte auch markiert werden, dass der Prozess nun auf kein Ereignis mehr wartet.

Parameter
customerSchlafender Prozess, der geweckt werden soll.

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
  Impressum   Datenschutz Stand: 2013-01-18 12:56   BO, DL