Vertieferseminar Geoinformation WS 02/03

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

Monitore in Java++ Aufgabe 2 von Markus Schlebusch Christoph Reinboth Sebastian Zok Johannes Stolte Norman Zuther.
Bauteile des PC´c Werden vorgestellt: PC-Gehäuse Prozessor Tastatur
Kapitel 11 Deadlocks RW-Systemarchitekur Kap. 11.
10.2 Wechselseitiger Ausschluss in Hardware
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Beim Start eines Prozesses in Windows NT, 2000 wird a der Programmtext aus der exe-Datei ab der dort angegebenen Adresse gespeichert.
C Tutorium – Semaphoren –
Semaphore void Passieren (semaphore &s) { if (s > 0) { s--;
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
Netzwerke im Dialogmarketing
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Sequenzdiagramm.
Kapitel 6.1 Nebenläufigkeit und wechselseitiger Ausschluss
Kapitel 7.2 Dining philosophers problem
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Kapitel 10 Nebenläufigkeit und wechselseitiger Ausschluss
Nebenläufige Programmierung
Dateihandles Um in Perl eine bestimmte Datei zum Lesen, Schreiben oder Anhängen zu öffnen, benötigt man so genannte Dateihandles. Ein Dateihandle ist der.
Neumannrechner.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Polymorphie (Vielgestaltigkeit)
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
Vorl. 6: Single- und Multitasking Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Vorlesung 5 Interrupts Peter B. Ladkin
Vortrag III Hier in der Vorlesungszeit! Anwesenheitspflicht Jede Gruppe hat 6 Minuten! Stellt eure GUI vor –was ihr besonderes gemacht habt –Spektakuläre.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Synchronisation paralleler Transaktionen AIFB SS Konzept der Transaktion 4.2 Konzept der Transaktion (1/4) Eine Transaktion ist ein in sich geschlossener,
Java Threads Sebastian Werler
Multitasking im Betriebssystem
Systeme 1 Kapitel 4 Prozesse WS 2009/10.
Parallel Programming Condition Queues
Eine Präsentation von Peter Rasser
WS 2012/13 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #11 Transaktionsverwaltung.
Wer macht was beim Einschalten des Rechners?
Prozess-synchronisation
Thread Synchronisation in JAVA
Betriebssysteme Übung Tutorium „System Calls & Multipgrogramming“
Betriebssysteme Übung 2. Tutorium. Task 1 – Locks (1) Wozu Locks? Dienen dazu, exklusiven Zugriff auf eine Ressource sicherzustellen Lock = binäre Semaphore.
Objectives Verstehen was unterDelegate verstanden wird
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Systemsoftware und Betriebssysteme
Interprozess- kommunikation (IPC)
Kommandozeile und Batch-Dateien Molekulare Phylogenetik – Praktikum
Parallelisierung für Multiprozessor-Maschinen Teil 2.
Parallelisierung für Multiprozessor-Maschinen
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
2. Kommunikation und Synchronisation von Prozessen 2
Grundlagen, Prinzipien und Aufgaben eines Betriebssystems
Autor: Timo Pagel Nutzung: Diese Lernkarten sind für die Nutzung mit OpenCards gedacht Siehe dazu
2.3 Implementierung von Prozessen
Einführung in die Programmierung mit Java
Einführung in die Programmierung mit Java
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
Parallel Programming Semaphores / Reader - Writer - Lock
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
1 VE 11 Kruskal-Realisierung Listen. 2 Auf dem Weg zur Kruskal-Realisierung Vorüberlegungen: Der Graph könnte dargestellt werden als Menge von Knoten,
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 1 Beispiel class SpreadSheet { int cellA1, cellA2, cellA3; synchronized.
Multiprocessing mit OpenMPI Marius Albath. Vorlesung Betriebssysteme, Was ist OpenMPI Was ist OpenMPI OpenMPI Standard Setup OpenMPI Standard.
© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework Von: Simon Lubberich Erstbetreuer:
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Exceptions in der Programmiersprache Java.
Der kritische Abschnitt
 Präsentation transkript:

Vertieferseminar Geoinformation WS 02/03 Parallele Programmierung von Signalverarbeitung in Java Vertieferseminar 07.11.02 Präsentation: Christoph Platen

Vortragsgliederung Motivation Prozesskonzepte Zustandsübergänge von Threads verwendete Methoden Programmierung von Threads Race Condition Monitorkonzept Signalverarbeitung 07.11.02 Christoph Platen

Motivation Projektsituation im Sommersemester 03 : PC GPS-Empfänger Kompass Pointman Tastatur PC N e b n p r o g a m H u t Die in einzelnen Nebenprogrammen aufbereiteten Daten werden durch ein Hauptprogramm verarbeitet Signalverarbeitung 07.11.02 Christoph Platen

Motivation Signalübertragung vom GPS-Empfänger zum PC nur dann, wenn Daten vorliegen alle anderen Anwendungen sollen parallel ablaufen ( Download, Tastatur, Drucker etc. ) keine Wartezeiten,bis ein Programm komplett ausgeführt ist Ziel: Ablauf verschiedener Prozesse soll quasi parallel sein Signalverarbeitung 07.11.02 Christoph Platen

Prozesskonzepte aus Kostengründen hat jeder Rechner nur einen Prozessor bis in die 60er Jahre wurden Batch-Betriebssysteme verwendet dies bedeutet das der Programmablauf sequentiell war ein Programm konnte den Prozessor besitzen, Programme mussten nacheinander ausgeführt werden Programm A Programm B Programm C Prozessor Sequentieller Programmablauf in einem Batch-Betriebssystem Signalverarbeitung 07.11.02 Christoph Platen

Prozesskonzepte C B A Prozessor Konzept eines Betriebssystem-Prozesses brachte Idee hervor ein Programm unterbrechbar zu machen (d.h. dem Programm das Betriebsmittel (Prozessor) zu entziehen) Prozessor wird an andere Prozesse abgegeben; findet der Wechsel schnell genug statt,so merkt Beobachter den stetigen Prozesswechsel nicht Prozesse laufen quasi parallel ab C B A Prozessor Time-Sharing-Betriebssystem: Prozess bekommt vom Scheduler eine bestimmte Zeitscheibe zugeordnet Signalverarbeitung 07.11.02 Christoph Platen

Prozesskonzepte ein klassischer Betriebssystem-Prozess stellt eine Einheit für das Memory Management und das Scheduling dar es wird Platz im Arbeitsspeicher zugeordnet und Rechenzeit durch den Scheduler gewährt da der Kontextwechsel eines Betriebssystem-Prozesses mit der Verwaltung des Arbeitsspeichers gekoppelt ist spricht man von einem schwergewichtigem Prozess Signalverarbeitung 07.11.02 Christoph Platen

Prozesskonzepte Moderne Betriebssysteme bedienen sich sogenannter Threads Threads sind nur eine Einheit für das Scheduling innerhalb eines Betriebssystem-Prozesses können mehrere Threads gleichzeitig ablaufen da ein Thread nicht mit der Verwaltung des Arbeitsspeichers gekoppelt ist spricht man von einem leichtgewichtigen Prozess Signalverarbeitung 07.11.02 Christoph Platen

Prozesskonzepte Betriebssystem Prozess 1 Betriebssystem Prozess 2 Thread 1 Thread 2 Betriebssystem Prozess 3 Thread 3 Schaubild Threads und Prozesse Signalverarbeitung 07.11.02 Christoph Platen

Zustandsübergänge von Threads Threads können ähnlich wie Betriebssystem-Prozesse verschiedene Zustände haben Zustandsübergänge können erfolgen als Konsequenz von Methodenaufrufen oder durch Aktionen des Betriebssystems (virtuelle Maschine) Zustand eines Prozesses hängt davon ab,welche Betriebsmittel er gerade besitzt Signalverarbeitung 07.11.02 Christoph Platen

Zustandsübergänge von Threads new ready-to-run blocked running dead Zustandsübergänge von Threads als Folge von Methodenaufrufen und der virtuellen Maschine start() Sleep() beendet Scheduler weist Prozessor zu I/O beendet yield() Join() beendet Prozessor wird entzogen sleep() I/O Zugriff join() run() wird beendet Signalverarbeitung 07.11.02 Christoph Platen

Zustände New und Ready-To-Run Thread wird durch den new-Operator generiert er befindet sich in seinem Anfangszustand er ist noch nicht ablauffähig Datenfelder und Methoden können angesprochen werden Ready-To-Run Thread hat alle Betriebs- mittel um zu laufen,bis auf den Prozessor Signalverarbeitung 07.11.02 Christoph Platen

Zustände Blocked und Running ein laufender Thread macht eine I/O Operation und verliert den Prozessor Methodenaufrufe wie sleep() oder join() versetzen Thread in diesen Zustand Blocked Running Thread bekommt vom Scheduler den Prozessor zugeteilt Signalverarbeitung 07.11.02 Christoph Platen

Methode start() und yield() überführt einen Thread vom Zustand „new“ in den Zustand „ready-to-run“ wurde Thread bereits gestartet,so wird eine Fehlermeldung ausge- geben yield() bricht die Verarbeitung des gerade laufenden Threads ab überführt diesen wieder in den Zustand „ready-to-run“ Signalverarbeitung 07.11.02 Christoph Platen

Methode sleep() und join() versetzt den gerade laufenden Thread für msec bzw. nsec in den Zustand „blocked“ Schrittauflösung von 1ms bzw. 1ns ist Betriebs- system abhängig join() ein Thread kann diese Methode eines andere Threads aufrufen aufrufender Thread wird in den Zustand „blocked“ versetzt, bis der Thread, dessen join() Methode aufgerufen worden ist, beendet ist gezieltes Warten auf einen Thread möglich Signalverarbeitung 07.11.02 Christoph Platen

Methode interrupt() interrupt() wird zu einem gerade blockierten Thread aufgerufen überführt diesen in den Zustand „ready-to-run“ ein Thread kann so vorzeitig aufgeweckt werden,wenn er z.B. durch eine sleep() oder join() Methode in den Zustand „blocked“ versetzt wurde es wird eine sogenannte InterruptedException geworfen Signalverarbeitung 07.11.02 Christoph Platen

Programmierung von Threads schreiben einer Thread Klasse und diese direkt von der Klasse java.lang.Thread ableiten Methode run() der Klasse java.lang.Thread ist zu überschreiben der in der Methode run() enthaltene Code wird während des „running“ Zustandes ausgeführt Thread Sohn 1 Sohn 2 Implementieren von Threads durch das Ableiten von der Klasse Thread Signalverarbeitung 07.11.02 Christoph Platen

Programmierung von Threads Die Klasse Time wird definiert,indem man direkt von der Klasse java.lang.Thread ableitet Methode start() ruft Methode run() auf In der Klasse Uhr wird mit new ein Objekt der Klasse Time erzeugt und somit ein neuer Thread generiert Aktuelle Datum wird ausgegeben Geerbte Methode start() versetzt Thread In Zustand „ready-to-run“ Methode sleep() versetzt Thread für 100 msec in den Zustand „Blocked“ Rechenzeit wird durch Scheduler zuge- wiesen und Methode run () ausgeführt Nach Ablauf der Zeit geht Thread wieder in den Zustand „ready-to-run“ Interrupt() Methode beendet bei Aufruf die Methode run() Signalverarbeitung 07.11.02 Christoph Platen

Zugriff auf gemeinsame Ressourcen benutzen mehrere Threads dieselben Daten, so kann es zu Synchronisationsproblemen kommen beispielsweise bekommt ein schreibender Thread den Prozessor entzogen ehe er mit dem Schreiben der Datei fertig ist der Lese-Thread beginnt jedoch schon zu lesen und erhält inkonsistente Daten. ( Reader/Writer-Problem) man spricht von einer Race Condition, bei der das Ergebnis von der ausgeführten Reihenfolge der Threads abhängt um sinnvolle Ergebnisse zu erhalten ist eine Abarbeitungsreihenfolge ( Synchronisation) der Threads zwingend erforderlich Signalverarbeitung 07.11.02 Christoph Platen

Array mit einem Zähler für die Race Condition Beispiel: Threads 1 und 2 greifen auf eine gemeinsam genutzte Variable (Array) zu Thread 1 schreibt Messdaten in das Array beginnend ab Array-Index 1 und die Anzahl der Werte in die Variable Zähler Zähler Wert 1 Wert 2 Wert n-2 1 3 2 n-1 7 37 Array mit einem Zähler für die benutzten Elemente Thread 2 liest die Daten aus und quittiert das Auslesen, indem er die Zählvariable auf 0 setzt es kann sein, dass schneller geschrieben als gelesen wird Signalverarbeitung 07.11.02 Christoph Platen

Race Condition Datenverlust Gemeinsame Variable Thread 2 Thread 1 Thread2 aktiv Zähler lesen Daten lesen Zähler lesen Thread1 aktiv Daten schreiben Zähler erhöhen Thread2 aktiv Datenverlust Zähler auf 0 setzen Sequenzdiagramm zur Darstelung einer Race Condition. Die Zeitachse t gibt den zeitlichen Verlauf an t Signalverarbeitung 07.11.02 Christoph Platen

Kritische Abschnitte zur Vermeidung von Race Conditions wendet man das Prinzip des wechselseitigen Ausschlusses an (mutual exclusion) dazu führt man kritische Abschnitte ein ein kritischer Abschnitt ist eine Folge von Befehlen,die ein Thread nacheinander vollständig abarbeiten muss Abgabe des Prozessors an einen anderen Thread ändert an dieser Bedingung nichts kein anderer Thread darf einen kritischen Abschnitt betreten,solange der erstgenannte Thread mit der Abarbeitung der Befehlsfolge noch nicht fertig ist Signalverarbeitung 07.11.02 Christoph Platen

Monitorkonzept Zur Realisierung der Problemstellung der kritischen Abschnitte wurde 1974 von Hoare das Monitorkonzept als Synchronisationsmittel entwickelt Grundidee eines Monitors ist, dass die Daten, auf denen die kritischen Abschnitte arbeiten, und die kritischen Abschnitte selbst in einem zentralen Konstrukt zusammengefasst werden critical section Monitor read() write() Daten P 1 P 3 P 2 Signalverarbeitung 07.11.02 Christoph Platen

Monitorkonzept Die grundlegenden Eigenschaften eines Monitors sind: Kritische Abschnitte,die auf denselben Daten arbeiten,sind Methoden eines Monitors Ein Prozess betritt einen Monitor durch Aufruf einer Methode des Monitors Nur ein Prozess kann zur selben Zeit den Monitor benutzen Jeder andere Prozess,der den Monitor aufruft,wird suspendiert und muss warten,bis der Monitor verfügbar wird In Java wird das Monitorkonzept mit Hilfe des Schlüsselwortes synchronized realisiert synchronized kann als Schlüsselwort für Methoden verwendet werden oder einen synchronisierten Codeblock Signalverarbeitung 07.11.02 Christoph Platen

Monitorkonzept Erstens: Monitor für den gegenseitigen Ausschluss von synchronisierten Klassenmethoden einer Klasse Für alle synchronisierten Klassenmethoden einer Klasse wird ein Monitor angelegt,welcher die Klassenmethoden überwacht Methode1() Methode2() Monitor Syn1 So kann nur ein einziger Thread zu einer bestimmten Zeit eine der synchronisierten Methoden bearbeiten Signalverarbeitung 07.11.02 Christoph Platen

Monitorkonzept Zweitens: Monitor für den gegenseitigen Ausschluss der Abarbeitung von synchronisierten Instanzmethoden zu einem speziellen Objekt Werden eine oder mehrere Instanzmethoden mit dem Schlüsselwort synchronized versehen,so hat jedes Objekt, das von dieser Klasse geschaffen wird, einen eigenen Monitor, der den Zugriff auf die Instanzmethoden überwacht Methode1() Methode2() Monitor a:Syn b:Syn Signalverarbeitung 07.11.02 Christoph Platen

Monitorkonzept Drittens: Monitor für den gegenseitigen Ausschluss von einzelnen synchronisierten Codeblöcken Eine synchronized Anweisung wird mit dem Schlüsselwort synchronized eingeleitet. In den runden Klammern erwartet die synchronized Anweisung eine Referenz auf ein Objekt. Dieses Objekt dient als Schlüssel,auch Lock genannt. Nur der Thread,der den Schlüssel besitzt hat Zugang zum Monitor. Wird eine synchronized Anweisung betreten, so wird nachgeschaut, ob das Schlüsselobjekt schon von einem anderen Thread benutzt wird. Ist dies der Fall,so muss der Thread warten,bis das Schlüsselobjekt freigegeben wird. Signalverarbeitung 07.11.02 Christoph Platen

Methode wait() und notify() überführt einen Thread, der eine synchronisierte Anweisung abarbeitet in den Zustand“blocked“ dadurch wird der Monitor für einen anderen Thread frei notify() durch notify() wird ein Thread der zuvor durch den Aufruf von wait() in den Zustand „blocked“ gebracht wurde, wieder aufgeweckt Thread erhält Zustand „ready to run“ Signalverarbeitung 07.11.02 Christoph Platen

Lexikon Java virtuelle Maschine: läuft in einem Betriebssystem-Prozess ab,d.h. sollen mehrer Java-Programme in getrennten Betriebssystem-Prozessoren ablaufen,so hat jeder Prozess seine eigene virtuelle Maschine Thread: (engl. Faden) Ablauffaden des Programmcodes sprich Kontrollfluss Betriebsmittel: sind Mittel,die ein Prozess zum Laufen braucht,dies kann der Prozessor oder ein I/O–Kanal eines Programms zu einer Datei auf der Festplatte sein I/O-Kanäle: sind Eingabe- bzw. Ausgabeströme, sie können von der Tastatur,Platte kommen oder auf den Bildschirm,die Platte gehen Signalverarbeitung 07.11.02 Christoph Platen