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 7

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-31 15:49   BO, DL