- Bisherige Programmierpraxis meist sequentielle Prozesse
und Client-Server Anwendungen
- Threads und Netznutzung nur durch spezielle Bibliotheken
- Programmiersprache Java [1]
stellt alles zur Verfügung
- Vorstellung der wichtigsten Sprachkonstrukte und Klassen
- Java Performance vs. FORTRAN oder C++
- allgemeine Verfügbarkeit, und die gute Integration
- sehr gut für Ausbildung geeignet
Ausführlichere Besprechung in [6].
Im folgenden elementare Kenntnisse in Java hilfreich.
- Hardware-Entwicklung
- Multitasking-Betriebssysteme, Multiprozessor Rechner
- Netzwerke von Workstations / PCs
- verschiedene Aufgaben gleichzeitig bearbeitbar
- Parallele oder Nebenläufige Programmierung
- englisch: `concurrent programming'
- Beispiele:
Trumpf/Comyc,
Helics,
Aufbau
Hilfsmittel, um gleichzeitige Bearbeitung auszudrücken:
- Erzeugen und Anstoßen von Aufgaben
- Synchronisierung des Zugriffs auf Ressourcen
- Koordinierung der Ressourcen
- Definition von Verbindungen (Kanälen) zur Kommunikation
- Informationsaustausch zwischen nebenläufigen Programmen
- Programmierersicht:
- Abstimmung des Algorithmus und der verwendeten Datenstrukturen
- oder Objekte und Methoden
- Parallele Programmierung:
- Daten im gemeinsamen (Haupt-)Speicher
- Daten verteilt auf lokale Speicher in vernetzten Rechnern
- gemeinsamer Zugriff mehrerer Programme auf diese Daten synchronisieren
- Daten zwischen den Rechnern transportieren
- Optimierung der Programme
- Verringerung der Zugriffskonflikte
- Verringerung des Datentransports
- viele Anstrengungen, um diese Unterschiede zu verstecken
RMI, JavaParty, Dejay
Implementierung paralleler Programme: Prozesse oder Threads
- Prozesse eigenständige Programme
- z.B. EXE-Dateien und Binaries
- Kontakt mit anderen Prozessen:
- TCP/IP Sockets
- Message Passing Bibliotheken (wie PVM [2] oder MPI [4]),
- Pipelines (über die Standard-Eingabe und -Ausgabe)
- oder über gemeinsame Speicherbereiche (shmem)
- Threads ´Ausführungsfäden´
- keine eigenständigen Programme
- sondern Teile von Prozessen
- Ausführung von ´Unterprogrammen´
- uneingeschränkten Zugriff auf alle globalen Daten im Prozess
- globale Variablen
- Datei-Handles
- Netzverbindungen
- nur lokale Daten der Unterprogramme sind verschieden
Abbildung 0:
UML Sequenzdiagramm
|
© Universität Mannheim, Rechenzentrum, 2000-2002.
Last modified: Thu May 2 16:31:51 CEST 2002