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

Implementierung des Schedulers. Mehr ...

#include <scheduler.h>

Klassendiagramm f├╝r Scheduler:
Zusammengeh├Ârigkeiten von Scheduler:

├ľffentliche Methoden

 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.
- ├ľ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

Implementierung des Schedulers.

Der Scheduler verwaltet die Ready-Liste (ein privates Queue Objekt der Klasse), also die Liste der lauff├Ąhigen Prozesse (Entrant Objekte). Die Liste wird von vorne nach hinten abgearbeitet. Dabei werden Prozesse, die neu im System sind oder den Prozessor abgeben, stets an das Ende der Liste angef├╝gt.

Dokumentation der Elementfunktionen

void Scheduler::exit ( )

Selbstbeenden des aktuellen Prozesses.

Hiermit kann sich ein Prozess selbst beenden. Er wird nun nicht wieder an das Ende der Ready-Liste angef├╝gt. Statt dessen wird nur der erste Prozess von der Ready-Liste heruntergenommen und aktiviert.

void Scheduler::kill ( Entrant that)

Beenden eines beliebigen Prozesses.

Mit dieser Methode kann ein Prozess einen anderen (that) beenden. In OOStuBS gen├╝gt es einfach den Prozess that von der Ready-Liste zu entfernen. Er wird somit nie wieder vom Prozessor ausgef├╝hrt werden. In MPStuBS ist die Implementierung etwas kniffliger, da der Prozess that auch w├Ąhrend der Ausf├╝hrung von kill auf anderen Prozessoren laufen kann. Wird that nicht in der Ready-Liste gefunden, so muss in seinem Prozesskontrollblock (Coroutine) vermerkt werden, dass der Prozess beendet werden soll. Dies muss in resume ├╝berpr├╝ft werden, bevor ein Prozess wieder in die Ready-Liste eingetragen wird.

Parameter
thatProzess, der beendet werden soll.
void Scheduler::ready ( Entrant that)

Anmelden eines Prozesses zum Scheduling.

Mit dieser Methode wird der Prozess that beim Scheduler angemeldet. Er wird an das Ende der Ready-Liste angef├╝gt.

Parameter
thatProzess, der angemeldet werden soll.
void Scheduler::resume ( )

Ausl├Âsen eines Prozesswechsels.

Hiermit kann ein Prozesswechsel ausgel├Âst werden, ohne dass der aufrufende Entrant wissen muss, welche anderen Entrant Objekte im System existieren und welcher davon sinnvollerweise aktiviert werden sollte. Diese Entscheidung trifft der Scheduler anhand der Eintr├Ąge seiner Ready-Liste. Der Scheduler soll den gerade laufenden Prozess an das Ende der Ready-Liste anf├╝gen und den ersten Prozess in der Ready-Liste aktivieren.

void Scheduler::schedule ( )

Starten des Schedulings.

Diese Methode setzt das Scheduling in Gang, indem der erste Prozess von der Ready-Liste entfernt und aktiviert wird. In MPStuBS muss diese Methode auf jeder CPU einmal aufgerufen werden, um auf dem jeweiligen Prozessor den ersten Prozess einzulasten.


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