Parallel Programming Proofs ( yay !)

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Klassen - Verkettete Liste -
Kurt Rosenberg. C# für.NET oder.NET für C# is(C# == C++ && Java)? true : false ; reines C# Ausblick Überblick.
Übung zur Numerische Geologie
Müll 1NaturEinkaufenMüll 2Vermischtes
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
Verteilte Software - Java - Prozedurale Programmierung 1
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
1 Computergestützte Verifikation Probleme bei der Softwareverifikation 1.komplexe Datentypen und Expressions 2.Pointer und dynamische Datenstrukturen.
Threads Richard Göbel.
Listen Richard Göbel.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
BCD Ripple Carry Adder von Enrico Billich.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Dynamische Webseiten Java servlets.
3.1.4 Leser/Schreiber-Ausschluß (reader/writer exclusion)
Automatisches Testen und Bewerten von Java-Klassen
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
Modulare Programmierung
DVG Ablaufsteuerung
15.1 Synchronisation nebenläufiger Prozesse
Informatikunterricht mit Java
C++ LEDA SWP SS 08Herresthal & Schepers1 Softwarepraktikum C++ LEDA Parallelisierung - Partitionierung - Zusammenführung
FH-Hof Singleton Pattern Richard Göbel. FH-Hof Motivation Bestimmte Klassen sollen nur ein Objekt haben Nur ein Fabrikobjekt für eine Fabrikklasse Zentraler.
I. Determinismus oder Indeterminismus
Grundkonzepte Java - Klassendefinition
Rekursive Funktionen (Fakultät)
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
... Unternehmens- leitung
Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke.
Halfadder a =1 s & cout b.
Parallel Matrix Multiplication
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Parallel Programming Parallel Matrix Multiplication
Informatik 1 Letzte Übung.
Kap 4-1OHO Kap. 4.2 Das Orbix CORBA-System Kurzer überblick zu der CORBA-Implementierung Orbix •Unser Fahrplan: •IDL Verwendungsbeispiel •Zoom-In: CORBA.
Parallel Programming Condition Queues
Parallel Programming ( J ) CSP
Spielprogrammierung mit LabView
Real Time Operating System
Der Funktionsassistent
Informatik I for D-MAVT
Aufruf einer Methode eines Objektes vom Typ „Bruch“
Learning By Doing Ereignissteuerung (Events) prozedural ereignisgesteuert Unterprogrammaufruf an fest codierter Stelle Wann immer der Event auftritt, führe.
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Bestandteile von Formeln
Brüche-Quartett Klasse 6-8 Spieler 4-6. Brüche-Quartett A1 Brüche-Quartett A2 Brüche-Quartett A3 Brüche-Quartett A4 Brüche-Quartett B1 Brüche-Quartett.
Beispielanwendung von Java Threads
Programmiervorkurs WS 2014/15 Methoden
Parallelwinkel im Überblick
Parallelwinkel im Detail
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Vegetationsplot 43 m 10 m Sammlerplot Reserveplot Bodenplot A1 A2 A3 A4 B1 B2 B3 B4 C1 C2 C3 C4 D1 D2 D3 D4 Streusammler Schneesammler Regensammler Vegetationsquadrat.
You need to use your mouse to see this presentation © Heidi Behrens.
Muster nebenläufiger Programmierung concurrent Packet von Java Alois Schütte AOSD1.
Schattenspeicher S1 S2 Segmente P11 P12 P13 • • • • P1n P21 P22 P23
Sektionen SEKTION C3 SEKTION B1 SEKTION A2 C B A38414 E Klicken Sie auf eine Fläche, um eine Sektion aus der Nähe zu betrachten. Weiter.
Prof. Dr. Alois Schütte Advanced System Programming 1 Das concurrent Paket 1 Überblick 2 Lock 3 Condition 4 Queue 5 Executors.
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Parallel Programming Semaphores / Reader - Writer - Lock
Parallel Programming Linearizability
93 Das Monitorkonzept (nach Hoare/Brinch-Hansen 1974) Nur ein Prozess bzw. Thread kann zu einem bestimmten Zeitpunkt im Monitor aktiv sein => gegenseitiger.
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Grundkurs Informatik mit Java
Arrays of Objects, a 3 part process
 Präsentation transkript:

Parallel Programming Proofs ( yay !)

Übersicht 1. Korrektheitsbeweise

Korrekt? synchronized( new Object() ) { critical_section(); }

Korrekt? public class Account { int balance = 0; public void withdrawTo(Account dest, int amount) { synchronized(this) { synchronized(dest) { dest.balance += amount; this.balance -= amount; } Account a, b ; // Thread A a. withdrawTo ( b,50); // Thread B b. withdrawTo ( a,100);

1. KORREKTHEITSBEWEISE

Übung #1 //Thread A public void run() { while (true) { non_critical_section(); while( !(signal.turn == 0) ) { /* try again */ } critical_section(); signal.turn = 1; } //signal is a shared object //signal.turn is declared as public volatile int turn = 0;

Übung #1 //signal is a shared object //signal.turn is declared as public volatile int turn = 0; 1. Statements benennen ( A 1, A 2, …) 2. Was ist zu zeigen ? 3. Invarianten finden 4. Induktion über Programmablauf 1. Invarianten gelten zu Beginn 2. Invarianten werden durch Übergänge nicht verändert

//Thread A public void run() { while (true) { A1: non_critical_section(); A2: while( !(signal.turn == 0) ) { /* try again */ } A3: critical_section(); A4: signal.turn = 1; } //Thread B public void run() { while (true) { B1: non_critical_section(); B2: while( !(signal.turn == 1) ) { /* try again */ } B3: critical_section(); B4: signal.turn = 0; } Was ist zu zeigen ? Welche Invarianten gelten ? Induktion über Programmablauf : Verankerung ( Programmanfang ) Schritt 1. Einfluss des anderen Threads ausschliessen 2. Zeigen, dass Invarianten bei allen Übergängen gültig bleiben

Übung #2 //Worker 0 public void run() { while (true) { s0.request(); while(true) { if (s1.read() == 1) { break; } critical_section(); s0.free(); }

//Worker 0 public void run() { while (true) { A1: s0.request(); while(true) { A2: if (s1.read() == 1) { break; } A3: critical_section(); A4: s0.free(); } //Worker 1 public void run() { while (true) { B1: s1.request(); while(true) { B2: if (s0.read() == 1) { break; } B3: critical_section(); B4: s1.free(); } Was ist zu zeigen ? Welche Invarianten gelten ? Induktion über Programmablauf : Verankerung ( Programmanfang ) Schritt 1. Einfluss des anderen Threads ausschliessen 2. Zeigen, dass Invarianten bei allen Übergängen gültig bleiben

FRAGEN?