Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Liesl Edelbrock Geändert vor über 11 Jahren
1
Terminierung und Deadlocks Enkhbat Daginaa Betreuerin Prof. Heike Wehrheim Totale Korrektheit
2
1/21 Übersicht Einleitung await – Statement Totale Korrektheit Deadlocks Terminierung
3
2/21 Einleitung Warum ist Programmverifikation so wichtig?
4
2/21 Einleitung Warum ist Programmverifikation so wichtig? – Zuverlässigkeit der Software – Erstellung der Dokumentation einfacher – Kompatibilität besser überprüfbar
5
3/21 Einleitung 1969 Hoare axiomatische Methode für sequentielle Programme 1976 Owicki und Gries erweiterten Hoares Methode für parallele Programme
6
3/21 Einleitung 1969 Hoare axiomatische Methode für sequentielle Programme 1976 Owicki und Gries erweiterten Hoares Methode für parallele Programme -Nicht nur partielle Korrektheit -Sondern auch die anderen Eigenschaften (z.B. Deadlockfreiheit, gegenseitiger Ausschluss)
7
4/21 await - Statement Formal: await B then S end await wird für die Synchronisation von Prozessen verwendet. B true => S atomar (unteilbar) ausgeführt werden B false => S blockiert und andere Komponenten können ausgeführt werden.
8
5/21 Totale Korrektheit {p} S {q} heißt partiell korrekt, wenn jede terminierende Berechnung von S, die in einem p- Zustand startet, in einem q-Zustand terminiert. {p} S {q} heißt total korrekt, wenn jede Berechnung von S, die in einem p-Zustand startet, terminiert und ihren Endzustand q erfüllt.
9
6/21 Totale Korrektheit Um totale Korrektheit von Parallelen Programmen zu zeigen, müssen wir 1. Deadlockfreiheit 2. Divergenzfreiheit beweisen.
10
7/21 Beispiel Beispielprogramm für Deadlock: x := 1; y := 2; await (x=2) then y := 1; // await (y=1) then x := 2;
11
8/21 Deadlock: Def: Ein Programm S mit Beweisskizze {p} S {q} ist deadlockfrei, falls es keinen Zustand x gibt (der p erfüllt), von dem aus S in einen Deadlock geraten kann.
12
8/21 Deadlock Def: Ein Programm S mit Beweisskizze {p} S {q} ist deadlockfrei, falls es keinen Zustand x gibt (der p erfüllt), von dem aus S in einen Deadlock geraten kann. d.h. Es liegt ein noch nicht terminiertes Programm/Teilprogramm vor, das keinen Schritt weiter ausführen kann.
13
9/21 Deadlock Methode von Owicki und Gries: 1. Zähle alle potentiellen Deadlocks auf. 2. Zeige, dass keiner dieser potentiellen Deadlocks eintreten kann.
14
9/21 Deadlock Methode von Owicki und Gries: 1. Zähle alle potentiellen Deadlocks auf. 2. Zeige, dass keiner dieser potentiellen Deadlocks eintreten kann. Wenn keiner der potentiellen Deadlocks eintreten kann, tritt somit kein echter Deadlock ein => Das Programm ist Deadlock-Frei
15
10/21 Deadlock Def: Sei ein paralleles Programm (i) heißt potenzieller Deadlock von S, falls die folgenden zwei Bedingungen erfüllt sind: - Für jedes i ist entweder eine await- Anweisung in oder die leere Anweisung E, für die Terminierung von steht. - Es gibt ein i, so dass eine await-Anweisung in ist.
16
11/21 Deadlock (ii) Gegeben seien interferenz-freie Standard Beweisskizzen i {1,…,n}, für schwache totale Korrektheit. Zu jedem potentiellen Deadlock gibt es ein Tupel von Zusicherungen: falls await B then S end, falls
17
11/21 Deadlock (ii) Gegeben seien interferenz-freie Standard Beweisskizzen i {1,…,n}, für schwache totale Korrektheit. Zu jedem potentiellen Deadlock gibt es ein Tupel von Zusicherungen: falls await B then S end, falls Keine potentiellen Deadlocks können eintreten.
18
12/21 Deadlock Parallelismus mit Deadlock-Freiheit: (1) Die Standard-Beweisskizzen für schwache totale Korrektheit sind interferenzfrei. (2) Für jeden potentiellen Deadlock von erfüllt das zugehörige Tupel von Zusicherungen die Formel
19
13/21 Beispiel: {x=0} await x = 1 then skip end // x:=1 {x=1}
20
13/21 Beispiel: {x=0} await x = 1 then skip end // x:=1 {x=1} {x=0 x=1} await x=1 then skip end {x=1} und {x=0} x:=1 {x=1}.
21
13/21 Beispiel: {x=0} await x = 1 then skip end // x:=1 {x=1} {x=0 x=1} await x=1 then skip end {x=1} und {x=0} x:=1 {x=1}. Potentielle Deadlock: (await x=1 then skip end, E).
22
13/21 Beispiel: {x=0} await x = 1 then skip end // x:=1 {x=1} {x=0 x=1} await x=1 then skip end {x=1} und {x=0} x:=1 {x=1}. Potentielle Deadlock : (await x=1 then skip end, E). Als Zusicherung: ((x=0 x=1) x 1, x=1)
23
14/21 Divergenz Eine Berechnung von S divergiert, falls sie unendlich ist. S kann von x aus divergieren, falls es eine unendliche Berechnung von S gibt, die in x startet.
24
15/21 Terminierung Um die Terminierung für totale Korrektheit zu zeigen, reicht while - Schleife von partielle Korrektheit nicht aus. Hierbei gilt die Nachbedingung allerdings nur, wenn die Schleife verlassen wird, wenn sie also terminiert.
25
16/21 Terminierung while-Schleife:
26
16/21 Terminierung while-Schleife: -Diese Schleifenregel ist korrekt für sequentielle Programme. -Aber Parallele Programme können gegenseitig beeinflussen.
27
17/21 Terminierung Zur zeigen: t nimmt auf jedem möglichen Pfad durch den Schleifenrumpf S abnimmt.
28
17/21 Terminierung Zur zeigen: t nimmt auf jedem möglichen Pfad durch den Schleifenrumpf S abnimmt. Unter einem Pfad versteht man eine möglicherweise leere Folge von normalen Wertzuweisung und atomaren Bereichen.
29
18/23 Terminierung Neue Schleifenregel: 1) ist eine Standart-Beweisskizze, 2) für jede normale Wertzuweisung und jeden atomaren Bereich T in S, 3) für jeden Pfad gibt es eine normale Wertzuweisung oder einen atomaren Bereich T in mit 4)
30
19/21 Terminierung Zusätzlich müssen wir Interferenzfreiheit für totale Korrektheit zeigen: Interferenzfreiheit für partielle Korrektheit + t nimmt nicht zu.
31
20/21 Beispiel S1: while (x>0) do y := 0; if (y=0) x := x-1; else y := 0 od S2: while (x>0) do y := 1; if (y=1) x := x-1; else y := 1 od
32
21/21 Zusammenfassung totale Korrektheit = partielle Korrektheit + garantierte Terminierung. Deadlockfreiheit und Divergenzfreiheit Aber es gibt auch Programme, die nicht unbedingt terminiert werden müssen.
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.