Bedienungsanleitung

Der Einstieg

 

Nach dem Starten der Anwendung wird das Einstiegsfenster (Abbildung 1) geöffnet. Hier kann der Benutzer festlegen, wie viele Prozesse und Semaphore er benötig.

Es können maximal vier Prozesse und sechs Semaphore verwendet werden. Alternativ kann er aus einer Liste ein vorgegebenes Beispiel auswählen und starten.

Hat der Benutzer seine Eingaben gemacht, werden nach der Betätigung des Buttons “OK“ die Eingabefelder für die Prozess- und Semaphornamen, sowie für

die Semaphorwerte eingeblendet.

Nach Eingabe der Namen und der Initialwerte für die Semaphore, wird das Hauptfenster durch betätigen des Buttons “START“ geöffnet.

Hat der Benutzer keine Eingaben gemacht, werden Standardnamen für die Prozesse und Semaphore vergeben und die Semaphore mit Null initialisiert.

 

Es ist darauf zu achten, dass die Beispielauswahl auf “Keine“ steht, da sonst das ausgewählte Beispiel gestartet wird und die Benutzereingaben nicht berücksichtigt werden.

 

Abbildung 1: Einstiegsfenster

 

Das Hauptfenster

 

Das Hauptfenster (Abbildung 2) bildet anhand der zuvor vom Benutzer gemachten Eingaben die gewünschten Prozesse und Semaphore ab.

 

Abbildung 2: Hauptfenster

 

 

Die Prozesse werden als Texteingabefelder dargestellt, in die der Benutzer Semaphor-Operationen eingeben kann. Zusätzlich verfügt jeder Prozess über einen

Button mit der Beschriftung “do“. Dieser wird zum Ausführen der Operationen verwendet.

Die Semaphore werden als Schalen mit Kugel an der rechten Fensterseite dargestellt.

Der Button “Reset“ beendet die Ausführung der Operationen und setzt die Semaphorwerte wieder auf die Anfangswerte.

Mit dem Button „Schriftgröße“ kann die Schriftgröße der eingegebenen Operationen verändert werden.

Dazu steht ein Eingabefeld zur Verfügung, in das die Schriftgröße numerisch eingegeben werden kann. Dabei sind Eingaben von 9 bis 28 möglich. Durch drücken

der Entertaste oder des Buttons “Schriftgröße“ wird die Änderung übernommen.

Durch den Button “Hilfe“ wird ein Hilfefenster mit Beispielen für die Operationseingabe eingeblendet.

Der Button “Zurück“ schließt das Hauptfenster und der Benutzer befindet sich wieder auf der Einstiegsseite.

 

Eingabe der Semaphor-Operationen

 

Die Semaphor-Operationen werden in einer Art Pseudosprache eingegeben.

 

Neben einfachen Operationen ist es möglich, Operationen zu verknüpfen und durch For- und While-Schleifen mehrfach ausführen zu lassen.

 

Dabei ist zu beachten, dass Operationen nur eingegeben werden können, wenn gerade kein Prozess ausgeführt wird. Es muss also gegebenenfalls zunächst der Reset-Button betätigt werden.

 

 

Einfache Operationen

 

Bei der Eingabe einer einfachen Operation muss zunächst der Namen des Semaphors, auf den die Operation ausgeführt werden soll, gefolgt von einem Punkt eingegeben werden.

 

Danach folgt ein ‘v‘ bzw. ein  ‘p‘ für eine V- oder P-Operation, anschließend eine öffnende und dann eine schließende Klammer ‘()‘.

Das “v“ bzw. “p“ kann als Groß- oder Kleinbuchstabe eingegeben werden.

Die Eingabe wird dann mit einem Semikolon abgeschlossen.

 

 

Beisspiel:

 

Semaphor1.v();

Semaphor2.p();

 

 

Bei einer einfachen Operation wird der entsprechende Semaphorwert um Eins inkrementiert (V-Operation) bzw. dekrementiert (P-Operation).

 

Darüber hinaus kann ein Semaphorwert mit einer einzigen Operation auch um Werte größer als Eins erhöht oder verringert werden, indem in die Klammer eine ganzzahlige

positive Zahl größer-gleich Eins geschrieben wird.

 

Beispiel: 

 

Semaphor1.p(3);

Semaphor2.v(15);

 

Verknüpfen von Operationen

 

Mehrere einfache Operationen können mit einem ‘&‘ verknüpft werden. Diese werden dann atomar ausgeführt.

Grundsätzlich ist die Anzahl der auf diese Weise verknüpfter Operationen nicht begrenzt, aus Gründen der Übersicht sollten die Zahl der Verknüpfungen aber mit Bedacht gewählt werden.

 

Beispiel:

 

Semaphor1.v()&Semaphor2.p(2);

Semaphor1.v(3)&Semaphor2.p()&Semaphor3.v(2);

 

Schleifen

 

Es besteht die Möglichkeit eine oder mehrere Operationen in For-Schleifen einzubetten, um diese mehrmals wiederholen zu lassen.

 

Beispiel:

 

for(i=0; i<5; i++){

Semaphor1.v(4);

Semaphor2.p()&Semaphor3.p(2);

Semaphor3.v(3);

}

 

In diesem Beispiel werden die Operationen 4-mal wiederholt.

 

Soll nur eine Operation mehrmals wiederholt werden, können die geschweiften Klammern weggelassen werden.

 

Beispiel:

 

for(i=0; i<3; i++)

Semaphor1.v(2);

 

Natürlich gilt dies auch für verknüpfte Operationen:

 

for(i=0; i<3; i++)

Semaphor2.p()&Semaphor3.p(2);

 

Analog zur For-Schleife können Operationen in While-Schleifen eingebettet werden. Diese haben die Form einer Endlos-Schleife und wiederholen die Operationen unendlich oft.

 

Beispiel:

 

while(true){

Semaphor1.v();

Semaphor2.p();

Semaphor3.v(3);

}

 

Auch hier können bei nur einer Operation die geschweiften Klammern weggelassen werden.

 

Beispiel:

 

while(true)

Semaphor1.v(2);

 

Natürlich gilt dies auch für verknüpfte Operationen:

 

while(true)

Semaphor2.p()&Semaphor3.p(2);

 

Bei der Verwendung von Schleifen ist zu beachten, dass pro Prozess nur jeweils eine For- und eine While-Schleife verwendet werden darf. Außerdem dürfen

Schleifen nicht ineinander verschachtelt werden und maximal 20 Operationen beinhalten.

 

Kommentare

 

Es besteht außerdem die Möglichkeit, Kommentare einzufügen. Dazu kann ein beliebiger Text geschrieben werden, der ebenfalls mit einem Semikolon abgeschlossen werden muss.

 

Beispiel:

 

erzeuge Produkt;

denkt nach;

 

Ausführung der Semaphor-Operationen

 

Mittels des Buttons “do” unter einem Prozess werden dessen Operationen nacheinander ausgeführt. Ein Pfeil zeigt auf die Operation, die als nächstes ausgeführt wird. 

Pro Klick auf den Button springt der Pfeil eine Zeile weiter. 

Wird eine V- oder P-Operation ausgeführt, zeigen rote Pfeile am Prozess und den betroffenen Semaphoren an, welche Operation ausgeführt und um welchen Wert

die Semaphore verändert wurden (siehe Abbildung 3).

 

Abbildung 3: Ausführung der Semaphor-Operationen

 

 

Wenn ein Prozess versucht, mittels einer P-Operation auf einen Semaphor zuzugreifen, dessen Wert Null ist, oder der Semaphorwert nach dem Ausführen der

P-Operation negativ wird, wird der Prozess blockiert und ein Hinweisfenster geöffnet (siehe Abbildung 4).

Durch den Button “Prozess blockiert!“ wird das Hinweisfenster geschlossen und das Programm läuft weiter. Allerdings bleibt der betroffene Prozess solange

blockiert, bis der Wert des Semaphors, auf den dieser Prozess zugreifen wollte, wieder größer als Null ist.

 

Abbildung 4: Blockierter Prozess