Peter Lorenz English smaller fonts Simulation und Animation

5.3. Vorrangbelegung und Nutzerketten

Um analoge Vorgänge der Realität abzubilden, gibt es in GPSS die Vorrangbelegung von Einrichtungen und die zeitweilige oder endgültige Verdrängung von Transaktionen, die sich gerade dort befinden.
Die Interne Steuerung von GPSS/H verwaltet den Lauf der Transaktionen nach einem festen Algorithmus. Um anstelle dieses oft ausreichenden vorgefertigten Ablaufs spezifische Abläufe nachzubilden, entzieht man ausgewählte Transaktionen der Internen Steuerung, indem man sie in einer Benutzerkette ablegt. Dort bleiben sie, bis sie von einer anderen Transaktion befreit werden. Auf diese Weise sind reale Vorgänge der Interaktion von Prozessen modellierbar.

Vorrangbelegung mit VerdrängungTopLine

Bisher ist die vorrangige Abfertigung priorisierter Transaktionen (Xacts) beim Warten auf Freiwerden eines Speichers oder einer Einrichtung behandelt worden.

Daran soll hier durch ein kleines Programmbeispiel erinnert werden. Im Testmode (im Web gegenwärtig nicht verfügbar) kann man verfolgen, wie priorisierte Xacts an die Spitze der CEC vorrücken, auf diese Weise zuerst bewegt werden und zuerst die Chance haben, eine gerade frei gewordene Einrichtung zu belegen.


Die höher priorisierten Xacts warten hier geduldig, bis ihr Vorgänger niedrigerer Priorität fertig bedient ist. Wenn sie in einer Verzögerungskette mit mehreren wartenden Xacts konkurrieren, ordnen sie sich prioritätsgemäß ein. Xacts der Priorität 20 stehen vor denen der Priorität 10. Es wird empfohlen, das obenstehende Beispiel im Test-Modus zu verfolgen.
Wie kann man die mittleren Wartezeiten der normalen und der priorisierten Xacts miteinander vergleichen?
Eine Lösung ist in dem folgenden, mit Absicht zu klein gehaltenen Textfeld versteckt. Bitte überlegen Sie erst selbst, bevor Sie nachschauen!


SLX

Zur Nachbildung der vorrangigen Ausführung, Abfertigung oder Erledigung priorisierter Vorgänge, Aufträge oder Handlungen dienen die nun einzuführenden Verdrängungsmechanismen. Sie unterbrechen die gerade ausgeführte Bedienung einer Transaktion mit niedrigerer Priorität.

Interruptketten

In der Realität gibt es Situationen, in denen ein laufender Prozeß vor seinem vorausberechneten oder vorausgesehenen Ende unterbrochen wird. Zur modellmäßigen Abbildung solcher Situationen benötigt man einen Mechanismus, der nachträglich Korrekturen von schon vorhandenen Eintragungen in der FEC erlaubt.
Im GPSS/H stehen dazu die Unterbrechungs- oder Interruptketten zur Verfügung.
Mit Hilfe des Blockes PREEMPT kann eine Transaktion eine andere Transaktion, die sich gerade in einer Einrichtung befindet, aus dieser verdrängen und zeitweilig in einer Interruptkette ablegen. Sie kann diese Verdrängung durch RETURN wieder rückgängig machen. Danach kann die verdrängte Transaktion auf ihren alten Platz zurückkehren und für die restliche Verweildauer dort bleiben.

Beispiel 1

In der Unfallbereitschaftsabteilung eines Krankenhauses arbeiten zwei Chirurgen an der Versorgung ambulanter Patienten. Wenn ein Unfallpatient eingeliefert wird, ist die laufende Behandlung zu unterbrechen. Sie wird nach der Versorgung des Unfallopfers wieder aufgenommen.


SLX

Im obigen Programmbeispiel sind zwei Blöcke neu eingeführt worden: PREEMPT zur Verdrängung einer Xact aus einer Einrichtung und RETURN zur Freigabe der okkupierten Einrichtung. Ihre Beschreibung ist Gegenstand des nächsten Abschnittes.

Blöcke zur Vorrangbelegung durch Verdrängung

PREEMPT
ist ein Block, der eine eintretende Xact vorrangig in die im Operanden A genannte Einrichtung einweist.
PREEMPT mit einfacher Operandenausstattung
verdrängt die dort gerade befindliche Xact. Sie wird in eine Interruptkette eingeordnet. Nach Abschluß der Vorrangbelegung, nach der Freigabe der Einrichtung mittels RETURN, kehrt sie zur Einrichtung zurück und verbringt dort die restliche Verweilzeit.
PREEMPT mit erweiterter Operandenausstattung
erlaubt komplizierte Verdrängungsprozesse. Seine Operanden sind wie folgt belegt:
OperandInhalt Erklärung
Axpr Name oder Nummer der Einrichtung
B leer Nur ein PREEMPT -Level ist erlaubt: eine verdrängende Xact kann nicht durch eine weitere verdrängt werden.
PR Eine Xact höherer Priorität kann eine andere mit niedriger Priorität verdrängen, auch wenn diese selbst durch PREEMPT eingetreten ist.
C xpr Block als Ziel, zu dem die verdrängte Xact gelenkt werden soll.
D xpr Ptyp Nummer und Typ des Parameters, wo die restliche Verweilzeit vermerkt wird.
E RE Xact wird von der Einrichtung gelöst und in den unter C genannten Block überführt.
RETURN
bewirkt die Freigabe einer vorher durch PREEMPT belegten Einrichtung. Der Operand A spezifiziert die freizugebende Einrichtung.

Beispiel 2

In der zitierten Unfallbereitschaftsabteilung kommen ambulante Patienten und schwere Unfälle. Bei schweren Unfällen wird der ambulante Patient vor Abschluß der Behandlung vom zweiten Arzt übernommen, während der erste sich unverzüglich dem Unfallpatienten zuwendet.

Wenn man die Resultatliste betrachtet, findet man keine Angaben zur Anzahl der Patienten, deren Behandlung unterbrochen werden mußte.
Wie kann man diese Anzahl erfassen?
Eine Lösung findet man wieder versteckt im folgenden kleinen Textfeld.


SLX

Zusammenfassend ist festzuhalten, dass man mit den Blöcken PREEMPT und RETURN einen vielstufigen Unterbrechungsmechanismus besitzt. Er übernimmt die Verwaltung und weitere Ablaufsteuerung sowohl der unterbrechenden als auch der unterbrochenen Xacts. Intern findet eine Korrektur der zukünftigen Ereigniskette (FEC) statt, die man auch für andere Zwecke benutzen kann.

Beispiel 3

Ein Nachwächter macht stündlich einen 10 Minuten dauernden Rundgang durch das bewachte Objekt. Wenn ein Anruf eingeht, der 5 + 3 Minuten dauert, kann sich der Beginn des Rundgangs verzögern.

Man hat mit diesem Programm eine realitätsnahe Beschreibung des auf den Wecker oder das Telefon wartenden Wächters.
Wie oft begann der Rundgang verspätet, weil der Wächter gerade telefonierte?
Wie oft mußte ein Anrufer warten, weil der Wächter gerade auf einem Rundgang war?

Wieder ist die Antwort in dem folgenden kleinen Fenster versteckt!

NutzerkettenTopLine

Im obigen Abschnitt sind Verdrängungsoperationen behandelt und zuerst in ihrem ursprünglichen Sinn, danach eher zweckfremd verwendet. Die zweckfremde Verwendung von PREEMPT ruft weitere Fragen hervor:

GPSS bietet seinem Nutzer die Verwaltung ausgewählter Xacts in Nutzerketten (User Chains) an.

Funktion von Nutzerketten

Xacts, die in eine Nutzerkette eingeordnet werden, gehören während der Zeit dieses Aufenthalts weder der FEC noch der CEC an. Sie sind der GPSS-internen Steuerung entzogen und der Nutzer muß selbst etwas tun, damit sie wieder in Bewegung geraten. Nutzerketten dienen den folgenden drei Zwecken:
  1. Modellierung einer vom Standard FIFO (oder FCFS) abweichenden Bedienungsreihenfolge,
  2. Einsparung von Rechenzeit bei Modellen mit großen Verzögerungsketten und
  3. Modellierung frei programmierbarer Auswahl- und Dispositionsmethoden.
Xacts, die in eine Nutzerkette eintreten, kommen immer aus der CEC. Xacts, die eine Nutzerkette verlassen, werden immer in die CEC überführt.
Nutzerketten sind permanente Modellelemente, die von den Blöcken LINK und UNLINK mit Xacts gefüllt bzw. von ihnen entlastet werden.
Nutzerketten, von denen es in einem Modell mehrere geben kann, sind durch eine Nummer oder einen Namen identifizierbar.

Blöcke für Nutzerketten

LINK
ist ein Block, der eintretende Xacts in eine Nutzerkette einordnet. Seine Operanden sind wie folgt belegt:
OperandInhalt Erklärung
A xpr Nummer oder Name der Nutzerkette
B FIFO Eintretende Xact ans Ende der Kette,
LIFO an den Anfang der Kette setzen.
xprPtyp Nummer und Typ eines Parameters, nach dessen Wert die Einsortierung erfolgt. Auf diese Weise kann man die in eine Nutzerkette eintretenden Xacts sowohl nach der Reihe ihres Eintreffens als auch nach einem beliebigen Attributwert sortieren. Diese Anordnung hat zunächst nur interne Bedeutung. Sie legt die spätere Auswahlreihenfolge noch nicht fest.
Cxpr Block als Sprungziel für den bedingten LINK-Modus.
Jede Benutzerkette besitzt einen LINK -Indikator. Im bedingten Modus arbeitet LINK wie folgt:
  • Wenn der Indikator AUS ist, wird die eintretende Xact zum Block umgeleitet, der in C angegeben ist. Gleichzeitig stellt sie den Indikator auf EIN.
  • Wenn der Indikator EIN ist, wird die eintretende Xact in die Nutzerkette eingeordnet.
  • Wenn ein Xact UNLINK betritt und die Nutzerkette ist bereits leer, wird der Indikator AUS gesetzt.
UNLINK
ist ein Block, der die Herauslösung von einem oder mehreren Xacts aus einer Nutzerkette veranlaßt. Seine Operanden sind in ihrer Bedeutung davon abhängig, ob LINK mit einem Operationszusatz(z.B. L, E, MAX) versehen ist.Hier wird zunächst die Operandenbelegung für LINK ohne Operationszusatz vorgestellt.
OperandInhalt Erklärung
A xpr Identifikation der Nutzerkette
B xpr Blockname oder -nr.: Nächster Block für befreite Xacts
C xproder ALL Anzahl zu befreiender Xacts
D leer, BACK oder BV Herauslösung vom Kopf oder vom Ende der Nutzerkette oder nach Werten einer Booleschen Variablen, die die Xacts der Nutzerkette auswertet

Beispiel 1

An einem Single-Server Modell soll gezeigt werden, wie man mit Hilfe einer Benutzerkette Rechenzeit einsparen kann.

Durch die Einordnung wartender Xacts in die Nutzerkette KUNDE wird vermieden, dass alle wartenden Xacts bei jedem RELEASE gestartet werden. Sie stehen nicht mehr in der CEC und nur der jeweils erste wird bewegt, um die Einrichtung zu belegen.
In früheren GPSS-Versionen und für langsame Prozessoren konnte auf diese Weise Rechenzeit gespart werden.
Kann man das auch heute noch feststellen? Modifizieren Sie dieses Modell, indem Sie die Nutzerkette durch eine Warteschlange ersetzen und vergleichen Sie die Rechenzeiten beim Durchlauf von 100000 Xacts!

Numerische Standardattribute

NameInhalt
CC Anzahl der Eintritte
CT Mittlere Verweildauer einer Xact
CA Mittlerer Inhalt
CH Aktueller Inhalt
CM Maximaler Inhalt
Da die Attribute eine Nutzerkette fast vollständig mit denen einer Warteschlange (Ausnahme: Null-Eintritte) übereinstimmen, kann man in vielen Fällen, in denen man ohnehin Nutzerketten braucht, auf Warteschlangen verzichten.

Beispiel 2

Es sollen 30 Zufallszahlen aus (0, 1,... , 999) ausgewürfelt und als sortierte Folge mit wachsenden Werten ausgegeben werden. Dabei sollen Wiederholungen erlaubt sein.

UNLINK kann mit einem Operationszusatz versehen werden. Daraus ergibt sich eine Modifikation des Operandenteils.
Die Zusätze können sein:
G, GE, E, NE, LE oder L.
Diese Zusätze nehmen Bezug auf einen oder zwei arithmetische Ausdrücke xpr im Operandenteil.
OperandInhalt Erklärung
DxprPtyp Parameteridentifikator und -typ: Erster Vergleichswert für den mit dem Operationszusatz gebildeten Vergleich
E xpr Zweiter Vergleichswert
Fxpr Blocknr. oder -name Sprungziel für eingetretene Xact, falls UNLINK -Versuch ohne Erfolg
Es werden die ersten Xacts befreit, deren Parameterwerte zu einem wahren Vergleichsausdruck führen.

Beispielblöcke

         UNLINK E    TAXEN,START,1,3PB,2,BUS
         UNLINK GE   AUFTR,NXTOP,1,2PL,FN$WTIME,WAIT

Der folgende Programmablaufplan informiert über die Abarbeitung des UNLINK -Blockes unter Beachtung seiner Operanden.

UNLINK-Flowchart

Bild: Abarbeitung des UNLINK-Blockes

Beispiel 3

Bei der Auswahl eines Bewerbers für eine ausgeschriebene Stelle sollen Frauen bei gleicher Leistung bevorzugt werden.

Zum Abschluß sei noch ein Beispiel für die Möglichkeit angeführt, die Auswahl aus einer Benutzerkette mit Hilfe einer logischen Variablen vorzunehmen. Die als Operanden auftretenden Parameterwerte beziehen sich auf Parameter der in der Nutzerkette festgehaltenen Xacts. Es werden diejenigen Xacts ausgewählt, bei denen die logische Variable den Wert wahr annimmt.

Beispiel 4

Jemand möchte ein Auto kaufen, das

Wie verfährt man, um das preisgünstigste Auto zu suchen, das den obigen Kriterien entspricht?
Im letzten Beispiel wird klar, dass man in Nutzerketten nach Xacts mit beliebigen, durch einen logischen Ausdruck beschreibbaren Attributkombinationen suchen kann.

Relativ umständlich bleibt es allerdings, Nachrichten zwischen Xacts auszutauschen. Das wird im nächsten Abschnitt näher zu erörtern sein. Im nächsten Abschnitt geht es auch um Möglichkeiten der Synchronisation des Laufes von Xacts.

KontrollfragenTopLine

  1. Beschreiben und vergleichen Sie zwei verschiedene Konzepte zur Modellierung vorrangiger Bedienung!
  2. Wann wird eine Transaktion in eine Interruptkette eingefügt?
  3. Welche Blöcke organisieren Beginn und Ende der Verdrängung einer Xact aus einer Einrichtung?
  4. Kann eine Transaktion aus einem Speicher verdrängt werden?
  5. Was geschieht mit einer durch PREEMPT verdrängten Transaktion, nachdem die verdrängende Transaktion die Einrichtung verlassen hat?
  6. Bleibt die Bindung einer verdrängten Transaktion zur Einrichtung in jedem Fall erhalten?
  7. Welche Funktionen haben Nutzerketten?
  8. Kann eine Transaktion gleichzeitig mehreren Nutzerketten angehören?
  9. Wie werden Transaktionen aus einer Nutzerkette herausgelöst und in welche Kette gelangen sie danach?
  10. Kann man durch ein UNLINK mehrere Xacts aus einer Nutzerkette herauslösen?

SAHome previous next up Englishsmaller fonts Top Line
Last Modified Fri 05-27-11 06:53 GMT Valid CSS!

Comments please to:pelosim@yahoo.com