1) Gegeben Sei der auf der rechten Seite beschriebene Prozess mit folgenden globalen Deklarationen. const int N := 4; chan c[n]; int wert := 0; Weiterhin hat der Prozess folgende lokale Deklaration. void add(int i){ int tmp := 1; int count := 0; while (count < i){ tmp *= 10; count++; } wert := wert + tmp; } Ergänzen Sie den Prozess so um einen oder mehrere Prozesse, so dass in der Variablen wert am Ende einer Simulation (Knopf: Auto) immer der Wert 4242 steht. Sie dürfen dabei die Variable wert selbst nicht verändern und es müssen alle Kommunikationskanäle genutzt werden. 2) a) Bearbeiten Sie Aufgabe 10 vom Aufgabenblatt 5 (paralleler Sortierer) mit Timed Automata. Dabei signalisieren sich die Prozesse nur mit einem Signal, wer die beiden zu den Prozessen gehörigen Daten sortieren soll. Das zu sortierende Array ist global. Die Zusammensetzung der Spezifikation könnte zusammen mit b) wie folgt aussehen. S0=Sort(0); S1=Sort(1); S2=Sort(2); S3=Sort(3); S4=Sort(4); /* für N=5 Prozesse*/ // List one or more processes to be composed into a system. system Initialisierer,S0,S1,S2,S3,S4,Pruefer; Hinweis: Für die Simulation und die spätere Verifikation ist es sinnvoll, alle Zustände als urgent zu markieren. b) Verifizieren Sie die Korrektheit Ihrer Spezifikation aus a); ergänzen Sie dazu den Pruefer-Prozess. Seite 1 von 6
3) Gegeben sei die obige Timed-Automata-Spezifikation mit clock c. a) Erklären Sie genau die Spezifikation des Zustands s2 und der ausgehenden Kanten. b) Hat die Spezifikation eine Deadlock-Möglichkeit? Wenn ja, welche Möglichkeiten in welchen Zuständen gibt es? c) Welche Möglichkeiten mit welchen Werten von c gibt es, vom Zustand s1 in den Zustand s7 zu kommen? 4) s3 x:=0 s1 x<20 x>2 x>6 Gegeben sei der obige Timed Automata P mit der clock x. c) Erklären Sie das Verhalten von P im Zustand s1. d) Hat P einen Deadlock? Begründen Sie Ihre Antwort. e) Welchen Wert kann x minimal und maximal annehmen, wenn s3 erreicht wird? f) Spezifizieren Sie die Anforderung, dass der Wert von x immer kleiner als 30 ist, in Timed CTL. g) Spezifizieren Sie die Anforderung, dass es die Möglichkeit gibt, dass nie s2 durchlaufen wird, in Timed CTL. x<8 s2 5) a) Entwickeln Sie eine Spezifikation aus drei Automaten, die sich über Kanäle synchronisieren und die ohne Zeitbedingungen einen Deadlock, aber mit bestimmten Zeitbedingungen keinen Deadlock hat. b) Entwickeln Sie eine Spezifikation aus drei Automaten, die sich über Kanäle synchronisieren und die ohne Zeitbedingungen keinen Deadlock, aber mit bestimmten Zeitbedingungen einen Deadlock hat. 6) Ein Erzeuger-Prozess erzeugt beliebig häufig Kommunikationssignale c. Ein alter Empfänger-Prozess ist nur maximal alle sechs Zeiteinheiten bereit, ein solches Signal Seite 2 von 6
anzunehmen. Schreiben Sie einen Filterprozess, der Signale des Erzeugers abfängt und diese an den Empfänger weiterleitet, dabei sollen zwischen zwei Übertragungen zum Empfänger mindestens sechs Zeiteinheiten liegen. Erhält der Filter innerhalb der sechs Zeiteinheiten ein Signal des Erzeugers, so merkt er sich das, damit nach genau sechs Zeiteinheiten ein Signal an den Empfänger geschickt wird. Erhält der Filter mehr als ein Signal innerhalb der sechs Zeiteinheiten, so werden diese weiteren Signale ignoriert. Der Filter realisiert damit einen Puffer der Größe Eins, das Verhalten wird auch im folgenden Bild skizziert. In einer Spezifikation kann man das Signal zwischen Erzeuger und Filter mit einer synchronen Kommunikation c und die Kommunikation zwischen Empfänger und Filter mit einer synchronen Kommunikation cc modellieren. Damit sehen die Erzeuger und Empfängerprozesse wie folgt aus. Erzeuger Empfaenger Modellieren Sie den Filter, ergänzen Sie eine globale Uhr und simulieren Sie Ihr System. 7) 3. Stock 2. Stock 1. Stock 0. Stock knopf[3] tuer[3] knopf[2] tuer[2] knopf[1] tuer[1] knopf[0] tuer[0] Knopfverwaltung Steuerung Fahrstuhlsteuerung rauf runter bereit Fahrstuhl Zu entwickeln ist die Spezifikation für einen Fahrstuhl für vier Stockwerke, der aus den in der Abbildung genannten Komponenten besteht. Entwickeln Sie die Spezifikation für Stock, Knopfverwaltung, Steuerung und Fahrstuhl schrittweise und versuchen Sie Seite 3 von 6
festzustellen, wie lange es maximal vom Drücken des Fahrstuhlknopfes bis zum Öffnen der Tür dauert. In der Zeichnung sind keine Möglichkeiten zum Datenaustausch mit globalen Variablen beschrieben, mit denen die Steuerung z. B. mitbekommen kann, welche Knöpfe gedrückt wurden. In jedem Stockwerk gibt es einen Knopf, der zur Anforderung des Fahrstuhls (knopf[i]) gedrückt werden kann. Der Knopf bleibt solange gedrückt, bis der Fahrstuhl in dem Stockwerk ist und die Tür geöffnet (tuer[i]) wird. Das Einsteigen der Leute soll minimal 4 und maximal 10 Zeiteinheiten dauern. Die Knopfverwaltung registriert, in welchem Stockwerk die Knöpfe gedrückt wurden. Zur Verwaltung kann z.b. eine Schlange (Queue) spezifiziert werden, in die die zuletzt gedrückten Knöpfe eingetragen werden (welche Vor- und Nachteile sehen Sie hier?). Das Drücken der Knöpfe soll ohne Verzögerung erkannt werden. Die Steuerung arbeitet die gedrückten Knöpfe ab. Wenn ein Knopf gedrückt wurde, wird die Information über den am frühesten gedrückten Knopf genommen und in Steuerbefehle an den Fahrstuhl, genauer den Fahrstuhlmotor, umgerechnet. Der Fahrstuhl fährt mit dem Befehl rauf ein Stockwerk nach oben und mit runter ein Stockwerk nach unten. Die Fahrt zwischen zwei benachbarten Stockwerken dauert exakt vier Zeiteinheiten. Wenn der Fahrstuhl ein neues Stockwerk erreicht hat, sendet er ein bereit-signal an die Steuerung. Wie verhält sich Ihre Spezifikation, wenn der Fahrstuhl sich im i-ten Stockwerk befindet und gerade die Türen wieder geschlossen hat und sofort wieder der Knopf des i-ten Stockwerks gedrückt wird? 8) Erstellen Sie eine Timed-Automata-Spezifikation für folgende informelle Spezifikation, wählen Sie sprechende Namen für Zustände und Variablen, dabei soll innerhalb Ihrer Spezifikation ein möglicher Messwert geraten werden. Ein Messgerät bekommt eine Probe übergeben und berechnet einen Messwert, der zwischen 10 und 20 (jeweils einschließlich) liegt. Die Berechnung dauert maximal 7 und minimal 5 Zeiteinheiten. Falls der Messwert größer 17 ist, wird die Messung einmal wiederholt. Bei einem Messwert unter 14 wird die Probe zur Archivierung gegeben, die zwischen 20 und 40 Zeiteinheiten dauert. Falls die Archivierung länger als 35 Zeiteinheiten dauert, kann die Probe auf einem Lagerplatz zur weiteren Bearbeitung außerhalb des Messarbeitsplatzes abgelegt werden. Für größere Messwerte wird die Probe im Messgerät bestrahlt, wobei es mindestens 5 Zeiteinheiten dauert, bis die Bestrahlung begonnen wird. Nach der Bestrahlung wird die Probe, wie vorher beschrieben, zur Lagerung weitergegeben. Seite 4 von 6
9) s1 x<3 i:=3 i:=1 x<12 s2 x>7 i:=i+2, x:=0 s3 x<15 j:=1, x:=0 s4 x<7 x<5 j:=i, i:=i-2 x>4 j:=j+2 Gegeben sei obige Timed Automata-Spezifikation. Formulieren Sie folgende Anforderungen in Timed CTL, überlegen Sie, ob die Anforderungen erfüllt sind und überprüfen Sie Ihre Annahme in UPPAAL. a) der Wert von x ist immer kleiner 20 b) wenn das System nicht im Zustand s1 ist, dann ist i immer ungerade c) wenn das System nicht im Zustand s1, s2 oder s3 ist, dann ist j immer ungerade d) der Wert von j ist immer kleiner als 7 e) es gibt einen Pfad, auf dem j immer kleiner als 7 ist f) auf allen Pfaden ist j einmal kleiner als 7 g) auf allen Pfaden ist i einmal kleiner als j h) es gibt einen Pfad, auf dem j immer kleiner-gleich i ist i) es gibt einen Pfad, auf dem j einmal größer als i ist j) immer wenn das System im Zustand s5 ist, gilt später j==i k) das System ist deadlockfrei 10) Lösen Sie Aufgabe 12 Vom Aufgabenblatt 5 mit Timed-Automata. Dabei sind folgende Änderungen zu beachten: Sie sollen synchrone Kommunikation nutzen. Statt Kommunikationskanälen gibt es nur direkte Kommunikationen, d. h. das Bild mit den gemeinsamen Verbindungen ist eher irreführend, es muss z. B. N requestund free-kanäle geben. Dabei bleibt die Zuteilung eines Kommunikationskanals tos[i] sinnvoll. Uppaal erlaubt eine einfache Spezifikation des Verhaltens des Servers, auf verschiedenen Kanälen zu warten. Rekapitulieren Sie, wie der Scheduler dem Sender mitteilen kann, welchen Kanal er zum Server nutzen soll. Weiterhin sollen folgende Zeitbedingungen mit spezifiziert werden: Der Scheduler benötigt mindestens zwei Zweiteinheiten, um für einen erneuten Empfang einer Kommunikation bereit zu sein. (In der Zwischenzeit können Antworten gesendet werden). Die eigentliche Kommunikation zwischen Sender und Server benötigt zwischen drei und acht Zeiteinheiten. Beweisen Sie die Deadlockfreiheit Ihres Systems. s5 x<9 s6 int i:=0; int j:=0; clock x Seite 5 von 6
Versuchen Sie, die weiteren in der ursprünglichen Aufgabe geforderten Anforderungen zu beweisen, überlegen Sie vorher, ob und wie, bzw. unter welchen weiteren Annahmen, eine Verifikation überhaupt möglich ist (dies ist bei weitem nicht immer der Fall, da die Logik nicht sehr mächtig ist!). Hinweis: Entwickeln Sie die Spezifikation zunächst ohne Zeit und die Abbruchmöglichkeit des Servers, ergänzen Sie dann die Abbruchmöglichkeit für den Server (die Vermeidung von Deadlocks ist nicht trivial) und ergänzen Sie dann die Zeitbedingungen. Seite 6 von 6