Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Dr. Welf Löwe und Markus Noga1 Gliederung: Teil 3 - Anpassungen 1. Einführung –Motivation –Definition, –Konzepte für Komponenten (klassische, kommerzielle,

Ähnliche Präsentationen


Präsentation zum Thema: "Dr. Welf Löwe und Markus Noga1 Gliederung: Teil 3 - Anpassungen 1. Einführung –Motivation –Definition, –Konzepte für Komponenten (klassische, kommerzielle,"—  Präsentation transkript:

1 Dr. Welf Löwe und Markus Noga1 Gliederung: Teil 3 - Anpassungen 1. Einführung –Motivation –Definition, –Konzepte für Komponenten (klassische, kommerzielle, akademische) 2. Industrielle Komponentensysteme der 1. Generation 1. CORBA 2. Enterprise JavaBeans 3. (D)COM 3. Anpassungen –Daten und Funktion –Interaktion Kommunikation Synchronisation Protokolle –Lebendigkeit

2 Dr. Welf Löwe und Markus Noga2 Problem Komponenten zusammengesetzt Komponentenprotokoll erzwungen –Guarded methods (Locks) –Unerwartete Methoden werden blockiert Nichts Falsches passiert Frage: passiert überhaupt etwas? Lebendigkeit des Komponentensystems muss garantiert werden.

3 Dr. Welf Löwe und Markus Noga3 Beispiel: Telecom-Channel dial answer talk hang up / send voice data signal quitring bellsignal answer

4 Dr. Welf Löwe und Markus Noga4 Komponentensystem Caller Channel Callee

5 Dr. Welf Löwe und Markus Noga5 Caller und Callee symetrisch Caller Channel Callee send receive send receive

6 Schnittstellen Sender und Receiver class Sender{ sync dial(int n){ channel.dial(n); } sync answer(){ answered.signal(); channel.answer(); } sync talk(VoiceData d){ answered.wait(); channel.talk(d); answered.signal(); } sync hangUp(){ channel.hangUp(); answered.init(); } class Receiver{ sync ringBell(); sync signalAnswer() { answered.signal(); } sync sendVoiveData(VoiceData d); sync signalQuit() { answered.init(); }

7 Dr. Welf Löwe und Markus Noga7 Petri-Netze Bipatiter Graph Stellen- mit Verweis auf Transitionsknoten Transitions- mit Verweis auf Stellenknoten Situation: –Markierung der Stellen mit Marken Lauf: –Übergangsfunktion: Situation Situation –Sind all Vorstellen einer Transition belegt, wird deren Markierung gelöscht und die Nachstellen markiert –Schalten nichtdeterministisch aber fair

8 Petri-Nets dialanswerhang upring belltalksend voice data signal quit

9 dialanswerhang upring belltalksend voice data signal quit

10 dialanswerhang upring belltalksend voice data signal quit

11 dialanswerhang upring belltalksend voice data signal quit

12 dialsignal answerhang upring belltalksend voice data signal quit

13 dialanswerhang upring belltalksend voice data signal quit

14 dialanswerhang upring belltalksend voice data signal quit

15 dialanswerhang upring belltalksend voice data signal quit

16 dialanswerhang upring belltalksend voice data signal quit

17 dialanswerhang upring belltalksend voice data signal quit

18 dialanswerhang upring belltalksend voice data signal quit

19 Dr. Welf Löwe und Markus Noga19 Problem Wie zeigt man, dass keiner dieser Läufe verklemmt? –garantiertes Schalten –kein Deadlock Wie zeigt man, dass lediglich Teile des Netzes schalten? –alle Transitionen schalten irgendwann –kein Livelock Randbedingung dabei –Simulation zeigt einen Lauf –Allgemein unendlich viele Läufe –Beweis durch Probe ausgeschlossen

20 dialanswer hang up ring belltalk signal quit

21 Dr. Welf Löwe und Markus Noga21 Transitionsmatrix C t1t2t3t4t5t6t7t8t9 s11 s21 s31 s41 s51 s61 s710 s811 s91 s101 s111

22 Dr. Welf Löwe und Markus Noga22 Transitionsinvariante T-Invariante Vektor entsprechend den Transitionen Gibt Anzahl von Schaltungen an, die zur Ausgangssituation führt Bestimmen durch Lösen von: Cd=0

23 Dr. Welf Löwe und Markus Noga23 Lösen von Cd=0 1d1 1d2 1d3 1d4 1d5 1d6 10d7 11d8 1 d9 1d10 1d11 = 0 d1=d2=d3=d4=d5=d7=d8=d9=d10=d11=1 d6=2

24 Dr. Welf Löwe und Markus Noga24 Lebendigkeitsbedingung d i sind verschieden von 0 –jede Transition schaltet irgendwann –kein Livelock Verklemmungsfreie Schaltfolge –aus der initialen Belegung –maximal exponentiell viele Folgen –kein Deadlock Im Beispiel –t1 t2 t3 t4 t5 t6 t7 t8 t10 t11 –jede Transition schaltet einmal

25 Dr. Welf Löwe und Markus Noga25 Problem Betrachtete Systeme sind endlich Keine dynamische Erzeugung von Objekt Im Beispiel –Ein Kanal –Beliebig viele potentielle Telefonierer Schalten an Bedingungen geknüpft, die vom Programmzustand abhängen Im Beispiel –Anschalten von BND Abhördienst bei kritischen Dateninhalten Lösung algebraische Petri-Netze

26 Dr. Welf Löwe und Markus Noga26 Algebraische Petri-Netze Idee: –Markiere Stellen mit Termen einer Termalgbra –Konstruiere Terme auf den Kanten –Rechne auf den Stellen entsprechend den Rechengesetzen der Algebra Interpretation: –Netz entspricht der Komponente –Term der Algebra entspricht Objekten der Komponente –Stelle und Term entspricht dem Zustand

27 Algebraic Petri-Nets dialanswerhang upring belltalksend voice data signal quit N i i i i ii ii ii ii ii ii ii

28 Algebraic Petri-Nets dialanswerhang upring belltalksend voice data signal quit N i i i i i(i,d) ii ii ii ii d ii ok(d)

29 Dr. Welf Löwe und Markus Noga29 Transitionsinvariante Voraussetzung Wohldefiniertheit –wie bei einfachen Netzen –zusätzlich Sortenreinheit: Stellen enthalten nur Terme einer Algebra T-Invariante, wenn keine Operationen auf den Kanten –Vektor entsprechend den Transitionen –Gibt Anzahl von Schaltungen an, die zur Ausgangssituation führt –Bestimmen durch Lösen von: Cd=0 Sonst –Beweis durch symbolisches Rechnen –i.a. unentscheidbar

30 Dr. Welf Löwe und Markus Noga30 Alternative Bislang –Deadlockvermeidung –Garantie, das System ist lebendig –Statisch sicher Alternative –Deadlockerkennung –Erkenne zur Laufzeit, wenn Deadlock eingetreten ist –Dynamisch sicher Nachteil –Laufzeitprobleme –Was tun, wenn Deadlock erkannt wurde

31 Dr. Welf Löwe und Markus Noga31 Problembeschreibung Abhängigkeitsgraph –Bipatiter Graph –Prozessknoten warten auf Locks –Locks sind von Prozessen aquiriert Deadlocksituation –Zyklus im Abhängigkeitsgraph

32 Dr. Welf Löwe und Markus Noga32 Beispiel class ProcessOne extends Thread{ public void run(){ l1.wait(); l2.wait(); doSome(); l2.signal(); l1.signal(); } class ProcessTwo extends Thread{ public void run(){ l2.wait(); l1.wait(); doSome(); l1.signal(); l2.signal(); }

33 Dr. Welf Löwe und Markus Noga33 Abhängigkeitsgraph Beispiel - ok ProcessOne ProcessTwo l1 l2

34 Dr. Welf Löwe und Markus Noga34 Beispiel class ProcessOne extends Thread{ public void run(){ l1.wait(); l2.wait(); doSome(); l2.signal(); l1.signal(); } class ProcessTwo extends Thread{ public void run(){ l2.wait(); l1.wait(); doSome(); l1.signal(); l2.signal(); }

35 Dr. Welf Löwe und Markus Noga35 Abhängigkeitsgraph Beispiel - deadlock ProcessOne ProcessTwo l1 l2

36 Dr. Welf Löwe und Markus Noga36 Klassifikation der Lösungsansätze Timeout –Nach bestimmter Wartezeit stellt Prozess Erfolglosigkeit des Wartens fest –Versuch wird mit Fehler abgebrochen –Keine Erkennung im eigentlichen Sinn Zentrale Erkennung Dezentrale Erkennung

37 Dr. Welf Löwe und Markus Noga37 Zentrale Erkennung Eine Komponente wird zentraler Deadlockerkenner Alle Wartesituationen werden –aktiv der Zentrale gemeldet –zyklisch von der Zentrale abgefragt Zentrale setzt den Abhängigkeitsgraphen zusammen Stellt fest, ob er zyklisch ist Löst Zyklus auf, indem ein Prozess mit Ausnahme terminiert, der damit sein Lock freigibt

38 Dr. Welf Löwe und Markus Noga38 ProcessOne sendet Abhängigkeit class ProcessOne extends Thread{ public void run(){ l1.wait(); l2.wait(); doSome(); l2.signal(); l1.signal(); } class ProcessTwo extends Thread{ public void run(){ l2.wait(); l1.wait(); doSome(); l1.signal(); l2.signal(); }

39 Dr. Welf Löwe und Markus Noga39 ProcessTwo sendet Abhängigkeit class ProcessOne extends Thread{ public void run(){ l1.wait(); l2.wait(); doSome(); l2.signal(); l1.signal(); } class ProcessTwo extends Thread{ public void run(){ l2.wait(); l1.wait(); doSome(); l1.signal(); l2.signal(); }

40 Dr. Welf Löwe und Markus Noga40 Phantom deadlock ProcessOne ProcessTwo l1 l2

41 Dr. Welf Löwe und Markus Noga41 Auflösung Theorie: –Mehrphasenprotokolle –dabei Locking des Programmlaufes –ineffizient Praxis –Man lebt mit Fehlerhafter Erkennung –Nachprüfen des Ergebnissen eliminiert die meisten Phantomdeadlocks

42 Dr. Welf Löwe und Markus Noga42 Dezentrale Erkennung Keine Zentrale Entscheidungsinstanz Kein Bottleneck in verteilten Anwendungen Klassifikation –Pfadsende Algorithmen –Testnachrichten Algorithmen –Globale Zustandserkennung

43 Dr. Welf Löwe und Markus Noga43 Pfadsende Algorithmen Berechnen lokalen Teil des Abhängigkeitsgraphen Mögliches Unwissen über andere Teile wird explizit in lokalen Graphen codiert –External – Knoten im Graphen für aquirierte oder nachgefragte Locks von Entfernten Komponenten –Pfad: Ext P 1... P n Ext kann komprimiert werden Löse lokale Konflikte lokal Tausche Information über lokale Abhängigkeiten mit entfernten Komponenten aus

44 Dr. Welf Löwe und Markus Noga44 Verteilter Abhängigkeitsgraph ProcessOne ProcessTwo l1 l2 Ext l1ProcessOne ProcessTwo

45 Dr. Welf Löwe und Markus Noga45 Abgeglichener Abhängigkeitsgraph ProcessOne ProcessTwo l1 l2 ProcessOne ProcessTwo l1 l2 Ext

46 Dr. Welf Löwe und Markus Noga46 Bewertung Vorteile –Verteilter Algorithmus –kein Bottleneck Nachteil –Viel Verkehr –Phantomdeadlocks möglich

47 Dr. Welf Löwe und Markus Noga47 Testnachrichten Kein expliziter Abhängigkeitsgraph Spezielle Nachrichten –Blockiert ein Prozess wird eine Nachricht gesendet –Erkennen von Deadlocks anhand der Nachrichten, die den Prozess erreichen Unterscheidung bezüglich Nachrichtenempfänger –Echobasiert – Senden an alle Nachbarn –Ahängigkeitsbasiert – Senden an den Halter des Locks auf den wir warten

48 Dr. Welf Löwe und Markus Noga48 Echobasierte Testnachrichten Echo Algorithmus: –Initial: sende Echo (mit eindeutiger Id) an alle Nachbarn, –Empfang von Echo Nachricht: sende an alle Nachbarn, außer an den Sender ignoriere weitere Echo Nachrichten mit gleicher Id wenn kein entsprechender Nachbar mehr vorhanden, sende Echo Antwort an Sender –Empfang von Echo Antwort: sende Echo Antwort an Sender der Echo Nachricht Idee: Deadlockinfo aus Echoantwort Overkill! Nur sinnvoll, wenn Echo aus anderen Gründen sowieso implementiert ist (z.B. zur Hardwarekontrolle)

49 Dr. Welf Löwe und Markus Noga49 Abhängigkeitsbasierte Testnachrichten Kein expliziter Abhängigkeitsgraph Spezielle Nachrichten –Blockiert ein Prozess wird eine Nachricht an den Halter des Locks gesendet –Ist der auch blockiert, leitet er die Nachricht weiter an die Halter der Locks auf die er wartet etc. –Kommt die initiierte Nachricht zum Sender zurück ist ein Zyklus erkannt Erkennen von Phantomdeadlocks möglich –Ignoriere Nachrichten über nicht (mehr) aquirierte Locks –Weitersenden nur beim Blockieren und Halten der Locks

50 Dr. Welf Löwe und Markus Noga50 ProcessOne sendet Abhängigkeit class ProcessOne extends Thread{ public void run(){ l1.wait(); l2.wait(); //ProcessTwo.probe(l2); doSome(); l2.signal(); l1.signal(); } class ProcessTwo extends Thread{ public void run(){ l2.wait(); l1.wait(); //ProcessOne.probe(l1); doSome(); l1.signal(); l2.signal(); }

51 Dr. Welf Löwe und Markus Noga51 ProcessTwo sendet Abhängigkeit class ProcessOne extends Thread{ public void run(){ l1.wait(); l2.wait(); //ProcessTwo.probe(l2); doSome(); l2.signal(); l1.signal(); } class ProcessTwo extends Thread{ public void run(){ l2.wait(); l1.wait(); //ProcessOne.probe(l1); doSome(); l1.signal(); l2.signal(); }

52 Dr. Welf Löwe und Markus Noga52 Phantom deadlock ProcessOne ProcessTwo l1 l2 probe(l1) probe(l2)

53 Dr. Welf Löwe und Markus Noga53 ProcessOne sendet Abhängigkeit class ProcessOne extends Thread{ public void run(){ l1.wait(); l2.wait(); //ProcessTwo.probe(l2); doSome(); l2.signal(); l1.signal(); } class ProcessTwo extends Thread{ public void run(){ l2.wait(); l1.wait(); //ProcessOne.probe(l1); doSome(); l1.signal(); l2.signal(); }

54 Dr. Welf Löwe und Markus Noga54 Abhängigkeitsgraph Beispiel - deadlock ProcessOne ProcessTwo l1 l2 probe(l1) probe(l2) resendProbe(l1) resendProbe(l2)

55 Dr. Welf Löwe und Markus Noga55 Bewertung Vorteile –Verteilter Algorithmus –kein Bottleneck –keine Phantomdeadlocks –kein expliziter Aufbau des Abhängigkeitsgraphen Nachteil –Viel Verkehr –Phantomdeadlocks bei alternativen Locks warten auf Lock1 oder Lock2 dann effizient beim Erkennen dieser

56 Dr. Welf Löwe und Markus Noga56 Globale Zustandserkennung Idee: –konstruiere ein konsistentes Bild des verteilten Systemzustandes (Abhängigkeitsgraph) –Erkenne Zyklen auf diesem konsistenten Abhängigkeitsgraphen Lösungen –Mehrere Phasen (Runden) oder Indirektionen –Locking oder Markierung der Nachrichten mit Phasen Ids Ein Vertreter –Lockverwaltung

57 Dr. Welf Löwe und Markus Noga57 Lockverwaltung Jedes Objekt ist durch einen Lock (oder mehrere) geschützt Aquirierung über Objekte Abgabe der Kontrolle der Locks eines Objekts an das aquirierende Objekt Aquisitionsbaum Anfragen immer über Wurzel des Aquisitionsbaum Dadurch relevanter Teil des Abhängigkeitsgraphen

58 Dr. Welf Löwe und Markus Noga58 Beispiel aquire lock give up control

59 Dr. Welf Löwe und Markus Noga59 Deadlock Situation

60 Dr. Welf Löwe und Markus Noga60 Anfrage über Lockverwalter

61 Dr. Welf Löwe und Markus Noga61 Bewertung Vorteile –Verteilter Algorithmus –kein Bottleneck –keine Pantomdeadlocks Nachteil –Viel Verkehr –Viel Verwaltung

62 Dr. Welf Löwe und Markus Noga62 Fazit Deadlockvermeidung ist besser als Deadlockerkennung Deadlockvermeidung –Spezifikation der Komponenten –u.U. Handbeweise vom Komponentenzusammensetzer Deadlockerkennung –Laufzeitprobleme –u.U. Phantomdeadlocks –Was tun, wenn Deadlock erkannt wurde? Kann nicht geraten werden Spezifikation (Exceptionprogrammierung) durch Komponentenentwererfer


Herunterladen ppt "Dr. Welf Löwe und Markus Noga1 Gliederung: Teil 3 - Anpassungen 1. Einführung –Motivation –Definition, –Konzepte für Komponenten (klassische, kommerzielle,"

Ähnliche Präsentationen


Google-Anzeigen