Parallele Programmierung in Java



Ähnliche Dokumente
Parallele Prozesse Prozeß Parallele Prozesse verzahnte Prozesse Nebenläufige Prozesse: Threads Vorlesung Software-Entwicklung / Folie 131 Ziele:

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Einführung in die Programmierung

Einführung in die Programmierung Blockkurs Java

Monitore. Klicken bearbeiten

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Objektorientierte Programmierung

Java: Vererbung. Teil 3: super()

Produktionsplanung und steuerung (SS 2011)

Schritt 1 - Ein Spielfeld

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Graphische Benutzungsoberflächen

Objektorientierte Programmierung. Kapitel 12: Interfaces

Einführung in die Java- Programmierung

Informationsblatt Induktionsbeweis

2A Basistechniken: Weitere Aufgaben

Anleitung über den Umgang mit Schildern

Lehrer: Einschreibemethoden

Primzahlen und RSA-Verschlüsselung

Wir arbeiten mit Zufallszahlen

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Kontakte Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Modellbildungssysteme: Pädagogische und didaktische Ziele

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

GEVITAS Farben-Reaktionstest

Woche 1: Was ist NLP? Die Geschichte des NLP.

Gruppenrichtlinien und Softwareverteilung

Erstellen von x-y-diagrammen in OpenOffice.calc

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Stepperfocuser 2.0 mit Bootloader

Versetzungsgefahr als ultimative Chance. ein vortrag für versetzungsgefährdete

Verwalten und Organisieren von Fotos,

von: Oktay Arslan Kathrin Steiner Tamara Hänggi Marco Schweizer GIB-Liestal Mühlemattstrasse Liestal ATG

Windows 8.1. Grundkurs kompakt. Markus Krimm, Peter Wies 1. Ausgabe, Januar inkl. zusätzlichem Übungsanhang K-W81-G-UA

Wie melde ich meinen Verein bei BOOKANDPLAY an?

Güte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über

Übung: Verwendung von Java-Threads

Der lokale und verteilte Fall

User Manual Data 24. Login und Layout

Dokumentation des Projektes Tic Tac Toe

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Große Übung Praktische Informatik 1

Zwischenablage (Bilder, Texte,...)

Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009

1 Mathematische Grundlagen

Arbeiten mit UMLed und Delphi

Dokumentation Schedulingverfahren

Erstellen der Barcode-Etiketten:

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?

ACDSee Pro 2. ACDSee Pro 2 Tutorials: Übertragung von Fotos (+ Datenbank) auf einen anderen Computer. Über Metadaten und die Datenbank

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Verarbeitung von ZV-Dateien im Internetbanking. Inhalt. 1. Datei einlesen Datei anzeigen, ändern, löschen Auftrag ausführen...

Delegatesund Ereignisse

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

Step by Step Softwareverteilung unter Novell. von Christian Bartl

CD einlegen (Moment warten) Die Aktion markieren, die durchgeführt werden soll. (in diesem Beispiel»Audio-CD-Wiedergabe)

Nach der Installation des FolderShare-Satellits wird Ihr persönliches FolderShare -Konto erstellt.

Was ist das Budget für Arbeit?

Programmierkurs Java

1 topologisches Sortieren

SEP 114. Design by Contract

Stammdatenanlage über den Einrichtungsassistenten

Folge 18 - Vererbung

Objektorientierte Programmierung. Kapitel 0: Begrüssung

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

2.2 Prozesse in Java

ELSTER Daten versenden

Gezielt über Folien hinweg springen

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

Professionelle Seminare im Bereich MS-Office

Grundlagen verteilter Systeme

Animationen erstellen

Grundlagen der Theoretischen Informatik, SoSe 2008

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Dokumentation IBIS Monitor

Zeichen bei Zahlen entschlüsseln

GITS Steckbriefe Tutorial

Jederzeit Ordnung halten

Elektronischer Kontoauszug

So funktioniert das online-bestellsystem GIMA-direkt

Einführungskurs MOODLE Themen:

Konzentration auf das. Wesentliche.

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Elternzeit Was ist das?

Terminabgleich mit Mobiltelefonen

Geld Verdienen im Internet leicht gemacht

Benutzerhandbuch - Elterliche Kontrolle

Ihre Lizenz ändern. Stand 01/2015

Visual Basic Express erstes Projekt anlegen

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Leichte-Sprache-Bilder

Mediator 9 - Lernprogramm

Elektronischer Kontoauszug

ANLEITUNG - WIE UNTERSTÜTZE ICH AUF STARTNEXT?

Transkript:

PPJ-1 Parallele Programmierung in Java Prof. Dr. Uwe Kastens Sommersemester 2000 Vorlesung Parallele Programmierung in Java SS 2000 / Folie 01

PPJ-2 Ziele und Durchführung Die Studierenden sollen grundlegende Konzepte und höhere Paradigmen zum Entwurf paralleler Programme, systematische Methoden zur Entwicklung paralleler Programme und Techniken zur parallelen Programmierung in Java erlernen und praktisch erproben. Durchführung: Vorlesung und Übung an zusammenhängendem Termin fliegender Wechsel zwischen Vorlesung, Kleingruppenarbeit und Rechnerübung Hausaufgaben, um Themen nachzuarbeiten oder vorzubereiten Vorlesung Parallele Programmierung in Java SS 2000 / Folie 02 Ziele der Vorlesung kennenlernen Erläuterungen zu den Zielen und zur verzahnten Durchführung von Vorlesung und Übung. Stimmen die Ziele mit Ihren Zielen überein?

Inhalt PPJ-3 Woche Thema 1 Grundbegriffe zu Prozessen und zu Threads in Java 2 Monitore allgemein und in Java 3 Monitore mit speziellen Wartebedingungen 4 Barrieren 5 Datenparallelität 6 Client-Server-Prinzip 7 Asynchrone Botschaften am Beispiel Client-Server 8 Botschaften in verteilten Systemen 9 Ereignisse in verteilten Systemen und Remote Method Invocation 10 Synchrone Botschaften Vorlesung Parallele Programmierung in Java SS 2000 / Folie 03 Übersicht über die Vorlesungsthemen Erläuterungen zur Auswahl der Themen Welche Themen interessieren Sie jetzt besonders? welche weniger? Fehlen Ihnen Themen in diesem Plan?

Voraussetzungen PPJ-4 Thema praktische Programmiererfahrung mit Java Grundbegriffe der parallelen Programmierung: z. B. aus der Vorlesung Software-Entwicklung (SWE) Konzepte und Methoden der Systemsoftware (KMS), SWE Prozess, Nebenläufigkeit, Parallelität, KMS 2-5, 2-9, verzahnte Ausführung, KMS 2-10 Adressräume, Threads, Prozesszustände KMS 2-11, 2-12, 2-18 Monitor KMS 3-37 bis 3-41 Prozess, Nebenläufigkeit, Parallelität, SWE-131 Threads SWE-133 bis 137 Synchronisation, Monitore in Java SWE-142 bis 150 Vorlesung Parallele Programmierung in Java SS 2000 / Folie 04 Quellen zu den Voraussetzungen sichtbar machen Erläuterungen dazu. Die Begriffe werden am Anfang dieser Vorlesung kurz wiederholt; in der Form wie inn SWE eingeführt. Skript zur Vorlesung SWE Skript zur Vorlesung KMS Haben Sie die Vorlesungen gehört? Wollen Sie den Stoff nachlernen oder wiederholen?

Elektronisches Vorlesungsmaterial im Web PPJ-5 Vorlesung Parallele Programmierung in Java SS 2000 / Folie 05 Elektronische Vorlesungsmaterial bekannt machen Erläuterungen dazu Das Skript wächst mit. Haben sich sich schon in dem Material umgesehen? Haben Sie sich Bookmarks für das Skript angelegt?

Literatur PPJ-6 Skript zur Vorlesung Parallele Programmierung in Java SS 2000 (wächst mit): http://www.upb.de/cs/ag-kastens/ppjava Skript zur Vorlesung Software-Entwicklung I + II WS, SS 1998/1999: http://www.upb.de/cs/ag-kastens/swei Skript zur Vorlesung Konzepte und Methoden der Systemsoftware SS 1999: http://www.upb.de/cs/heiss/lehre/kms/skript.html Gregory R. Andrews: Concurrent Programming, Benjamin Cummings, 1991 Scott Oaks, Henry Wong: Java Threads, 2nd ed., O Reilly, 1999 Jim Farley: Java Distributed Computing, O Reilly, 1998 Doug Lea: Concurrent Programming in Java, Addison-Wesley, 1996 Vorlesung Parallele Programmierung in Java SS 2000 / Folie 06 Hinweise auf Material und Bücher zur Vorlesung Erläuterungen dazu: Das Skript zu dieser Vorlesung wächst mit. Das Buch von Andrews vermittelt die Konzepte sehr gut und tiefgehend - tiefer als in dieser Vorlesung behandelt. Die 3 Bücher zu Java gehen sehr ausführlich auf Prgrammiertechniken ein; viele konkrete Beispiele - allerdings zum Teil nicht besonders übersichtlich. Wollen Sie den Stoff anhand einiger Bücher vertiefen?

Parallele Prozesse PPJ-7 Prozess: Ausführung eines sequentiellen Programmstückes in dem zugeordneten Speicher (Adressraum). Veränderlicher Zustand: Speicherinhalt und Programmposition. parallele Prozesse: mehrere Prozesse, die gleichzeitig auf mehreren Prozessoren ausgeführt werden. p1 p2 p3 verzahnte Prozesse: mehrere Prozesse, die stückweise abwechselnd auf einem Prozessor ausgeführt werden. Prozessumschaltung durch die Prozessverwaltung oder durch die Prozesse selbst. p1 p2 p3 Verzahnte Ausführung kann parallele Ausführung simulieren. Häufiger Wechsel vermittelt den Eindruck, daß alle Prozesse gleichmäßig fortschreiten. nebenläufige Prozesse: Prozesse, die parallel oder verzahnt ausgeführt werden können. Vorlesung Parallele Programmierung in Java SS 2000 / Folie 07 Grundbegriffe Paralleler Prozesse wiederholen Begriffe erklären. Verzahnte Ausführung verwenden wir auch als Modell um Eigenschaften des Prozesssystems zu beschreiben. SWE-131 In welchen Situationen veranlasst die Prozessverwaltung eine Prozessumschaltung?

Anwendungen Paralleler Prozesse PPJ-8 Benutzungsoberflächen: Die Ereignisse werden von einem speziellen Systemprozeß weitergegeben. Aufwendige Berechnungen sollten nebenläufig programmiert werden, damit die Bedienung der Oberfläche nicht blockiert wird. Simulation realer Abläufe: z. B. Produktion in einer Fabrik Animation: Veranschaulichung von Abläufen, Algorithmen; Spiele Steuerung von Geräten: Prozesse im Rechner überwachen und steuern externe Geräte, z. B. Montage-Roboter Leistungssteigerung durch Parallelrechner: mehrere Prozesse bearbeiten gemeinsam die gleiche Aufgabe, z. B. paralleles Sortieren großer Datenmengen. Vorlesung Parallele Programmierung in Java SS 2000 / Folie 08 Mit Parallelverarbeitung werden unterschiedliche Ziele verfolgt! Es werden Beispiele zu den Anwendungsarten erläutert. SWE-132 Geben Sie weitere Beispiele von parallelen Prozessen in Anwendungen und ordnen Sie sie ein.

Prozesszustände und ihre Übergänge PPJ-9 deblockieren wartend blocked blockieren bereit ready Prozessor aufgeben entziehen Scheduling Prozessor zuordnen rechnend running siehe KMS 2-17, 2-18 Threads (lightweight processes, Leichtgewichtsprozesse): Prozesse, die parallel oder verzahnt im gemeinsamen Speicher (Adressraum) ablaufen. Die Prozessumschaltung ist besonders einfach und schnell. Vorlesung Parallele Programmierung in Java SS 2000 / Folie 09 Prozessumschaltung verstehen Erläuterungen der Zustände und Übergänge. Rolle des Schedulers. Geben Sie Gründe und Beispiele für die Zustandsübergänge an.

Java Threads erzeugen - Technik Runnable implementieren Prozesse, Threads in Java: nebenläufig im gemeinsamen Speicher des Programms (o. Applets) Objekte von Klassen mit bestimmten Eigenschaften Erste Technik: Eine Benutzerklasse implementiert das Interface Runnable: class Aufgabe implements Runnable {... public void run () vom Interface geforderte Methode run {...} das als Prozess auszuführende Programmstück public Aufgabe (...) {...} Konstruktor } Der Prozess wird als Objekt der vordefinierten Klasse Thread erzeugt: Thread auftrag = new Thread (new Aufgabe (...)); PPJ-10 Erst folgender Aufruf startet dann den Prozess: auftrag.start(); Der neue Prozess beginnt, neben dem hier aktiven zu laufen. Diese Technik (das Interface Runnable implementieren) sollte man anwenden, wenn der abgespaltene Prozess nicht weiter beeinflußt werden muss; also einen Auftrag erledigt (Methode run) und dann terminiert, oder die Benutzerklasse als Unterklasse einer anderen Klasse definiert werden soll. Vorlesung Parallele Programmierung in Java SS 2000 / Folie 10 Deklaration von Prozessklassen verstehen. 3 Programmierschritte: Klasse mit der Methode run deklarieren Prozessobjekt erzeugen Ausführung des Prozessobjekte starten Falls in der Benutzerklasse weitere Objektmethoden benötigt würden, wären sie schlecht zugänglich. Dann sollte man die andere Variante verwenden. SWE-133 Die Klasse Thread hat Klassen- und Objektmethoden. Welche können in der run-methode auf welche Weise aufgerufen werden?

Java Threads erzeugen - Technik Unterklasse von Thread Zweite Technik: Die Benutzerklasse wird als Unterklasse der vordefinierten Klasse Thread definiert: class DigiClock extends Thread {... public void run () überschreibt die Thread-Methode run {...} das als Prozess auszuführende Programmstück DigiClock (...) {...} Konstruktor } Der Prozess wird als Objekt der Benutzerklasse erzeugt (es ist auch ein Thread-Objekt): Thread clock = new DigiClock (...); Erst folgender Aufruf startet dann den Prozess: PPJ-11 clock.start(); der neue Prozess beginnt neben dem hier aktiven zu laufen Diese Technik (Unterklasse von Thread) sollte man anwenden, wenn der abgespaltene Prozess weiter beeinflußt werden soll; also weitere Methoden der Benutzerklasse definiert und von aussen aufgerufen werden, z. B. zum vorübergehenden Anhalten oder endgültigem Terminieren. Vorlesung Parallele Programmierung in Java SS 2000 / Folie 11 Deklaration von Prozessklassen verstehen. 3 Programmierschritte: Klasse mit der Methode run deklarieren Prozessobjekt erzeugen Ausführung des Prozessobjektes starten Gegenüberstellung zur Variante mit Interface Runnable. SWE-134 Die Klasse Thread hat Klassen- und Objektmethoden. Welche können in der run-methode auf welche Weise aufgerufen werden?

Wichtige Methoden der Klasse Thread PPJ-12 public void run (); wird überschrieben mit der Methode, die die auszuführenden Anweisungen enthält public void start (); startet die Ausführung des Prozesses public void suspend (); hält den angegebenen Prozess an: clock.suspend(); public void resume (); setzt den angegebenen Prozess fort: clock.resume(); public void join () throws InterruptedException; der aufrufende Prozess wartet bis der angegebene Prozess terminiert ist: try { auftrag.join(); } catch (Exception e){} public static void sleep (long millisec) throws InterruptedException; der aufrufende Prozess wartet mindestens die in Millisekunden angegebene Zeit: try { Thread.sleep (1000); } catch (Exception e){} public final void stop () throws SecurityException; nicht benutzen! Terminiert den Prozess u. U. in einem inkonsistenten Zustand Vorlesung Parallele Programmierung in Java SS 2000 / Folie 12 Übersicht zu Thread-Methoden Erläuterungen zu den Methoden Veranschaulichung durch graphische Darstellung der Abläufe der beteiligten Prozesse Verweise auf Beispiele SWE-137 Übungsaufgaben: Veranschaulichen Sie die Wirkung der Methoden durch graphische Darstellung der Abläufe der beteiligten Prozesse. An welchen Methodenaufrufen sind zwei, an welchen ist nur ein Prozess beteiligt?

Beispiel: Digitale Uhr als Prozess im Applet (1) PPJ-13 Der Prozess soll in jeder Sekunde Datum und Uhrzeit als Text aktualisiert anzeigen. class DigiClock extends Thread { public void run () { while (running) iterieren bis von außen terminiert wird { line.settext(new Date().toString()); Datum schreiben try { sleep (1000); } catch (Exception ex) {} Pause } } public void stopit () { running = false; } private boolean running = true; Methode, die den Prozess von außen terminiert: Zustandsvariable } public DigiClock (Label t) {line = t;} private Label line; Label zum Beschreiben übergeben Prozess als Unterklasse von Thread, weil er durch Aufruf von stopit terminiert, durch weitere Thread-Methoden unterbrochen werden soll, eine andere Oberklasse nicht benötigt. Vorlesung Parallele Programmierung in Java SS 2000 / Folie 13 Erstes vollständiges Prozessbeispiel Erläuterungen zur Ausführung bis zur Terminierung von außen, stopit-methode, Begründung der Variante "Unterklasse von Thread". Applet vorführen Digital Clock Process SWE-135 Übungsaufgaben: Installieren Sie das Beispielprogramm und variieren es.

Beispiel: Digitale Uhr als Prozess im Applet (2) PPJ-14 Der Prozess wird in der init-methode der Applet-Unterklasse erzeugt: public class DigiApp extends Applet { public void init () { Label clocktext = new Label ("--------------------------------"); add (clocktext); } clock = new DigiClock (clocktext); clock.start(); Prozess erzeugen Prozess starten public void start () { clock.resume(); } Prozess fortsetzen public void stop () { clock.suspend(); } Prozess anhalten public void destroy () { clock.stopit(); } Prozess terminieren } private DigiClock clock; Prozesse, die in einem Applet gestartet werden, sollen angehalten werden (suspend, resume), solange das Applet nicht sichtbar ist (stop, start), müssen terminiert werden (stopit), wenn das Applet entladen wird (destroy). Andernfalls belasten Sie den Rechner, obwohl sie nicht mehr sichtbar sind. Prozess aus Applet starten Vorlesung Parallele Programmierung in Java SS 2000 / Folie 14 Erläuterungen zum Starten, Anhalten, Fortsetzen und Terminieren von Prozessen aus Applets. SWE-136 Übungsaufgaben: Ändern Sie die Klassen dieses Beispiels, so daß DigiClock nicht Unterklasse von Thread ist sondern Runnable implementiert. Begründen Sie weshalb die gezeigte Lösung mit einer in der DigiClock Runnable implementiert.

Verzahnung als abstraktes Ausführungsmodell PPJ-15 Zwischen Prozessen, die nicht warten, kann prinzipiell zu beliebigen Zeitpunkten umgeschaltet werden. Eine Scheduling Strategie schränkt die Beliebigkeit ein. Beispiel für unterschiedliche Ergebnisse bei unterschiedlicher Verzahnung: Zwei Prozesse operieren auf einer gemeinsamen Variable: konto = 50; a b c Prozess1: t1 = konto; t1 = t1 + 10; konto = t1; Prozess2: t2 = konto; t2 = t2-5; konto = t2; d e f Mit atomaren Zuweisungen a - f liefert das Programm die gleiche Vielfalt von Ergebnissen wie mit den atomaren Zusammenfassung <a,b> und <d, e> oder <b, c> und <e, f>, denn in b und e kommen keine globalen Variablen vor. Vorlesung Parallele Programmierung in Java SS 2000 / Folie 15 Erläuterungen zu atomaren Operationen. Wir sprechen später über Scheduling Strategien. Wechselwirkung (Interferenz) zwischen Prozessen über gemeinsame, globale Variable. Die gewünschten Programmergebnisse dürfen nicht auf Annahmen über die Verzahnung basieren. Alle Ergebnisse, die das Beispiel liefern könnte. Welche Ergebnisse könnte das Beispiel liefern? Wie müssen die Operationen atomar zusammengefasst werden, damit das Ergebnis bei jeder noch zulässigen Verzahnung gleich ist?