Kommunikationsmodelle

Ähnliche Dokumente
(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert?

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES Software AG. All rights reserved. For internal use only

Aufgabe 1: Interprozesskommunikation In der Vorlesung wurden zentrale Aspekte von grundlegenden Kommunikationsmustern vorgestellt.

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Parallele Prozesse. Prozeß wartet

Vorlesung "Verteilte Systeme" Sommersemester Verteilte Systeme. Adreßraum. Rechner. Verteilte Systeme, Sommersemester 1999 Folie 19.

Einführung. Anwendung. logischer Adreßraum. Kontrollfluß (Thread) = CPU führt Instruktionen aus. Was charakterisiert einen Kontrollfluß?

3 Programmiermodelle für parallele und verteilte Systeme

Konzepte und Methoden der Systemsoftware. Aufgabe 1: Polling vs Interrupts. SoSe bis P

Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation

Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )

Protected User-Level DMA in SCI Shared Memory Umgebungen

OpenMP am Beispiel der Matrizenmultiplikation

Synchronisation und Kommunikation über Nachrichten

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Nebenläufige Programmierung

Grundlagen Rechnerarchitektur und Betriebssysteme

Vermittlungsschicht ( network layer )

CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik)

Inhaltsverzeichnis. Carsten Vogt. Nebenläufige Programmierung. Ein Arbeitsbuch mit UNIX/Linux und Java ISBN:

8.4 Das Andrew File System Ausblicke Zusammenfassung 410 Übungen 411

Uberblick Verteilte Synchronisation Zeit in verteilten Systemen Logische Uhr Synchronisation Aufgabe 6 VS- Ubung (SS15) Verteilte Synchronisation 10 1

Wie kann man die Korrektheit reaktiver Systeme gewährleisten?

Domänenmodell: Fadenkommunikation und -synchronisation

Wie groß ist die Page Table?

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/2013. WebSphere MQ Teil 3

Dr. Monika Meiler. Inhalt

Java RMI Remote Method Invocation

Prüfungsprotokoll der mündlichen Prüfung Verteilte Systeme 1678 (Bachelor Informatik)

A Kompilieren des Kernels B Lineare Listen in Linux C Glossar Interessante WWW-Adressen Literaturverzeichnis...

Enterprise JavaBeans Überblick

Paralleles Rechnen. (Architektur verteilter Systeme) von Thomas Offermann Philipp Tommek Dominik Pich

VS3 Slide 1. Verteilte Systeme. Vorlesung 3 vom Dr. Sebastian Iwanowski FH Wedel

Multiuser Client/Server Systeme

Was machen wir heute? Betriebssysteme Tutorium 2. Organisatorisches. Frage 2.1.a. Theorieblätter Abgabe. Antwort. Probleme mit OS/161?

VORSTELLUNG DER DIPLOMARBEIT

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus

.NET Networking 1. Proseminar Objektorientiertes Programmieren mit.net und C# Matthias Jaros. Institut für Informatik Software & Systems Engineering

Vorlesung "Verteilte Systeme" Sommersemester Verteilte Systeme. 9. Verteilte Algorithmen

Operating System Kernels

Client/Server-Systeme

Betriebssysteme. 4y Springer. Eine kompakte Einführung mit Linux. Albrecht Achilles. Mit 31 Abbildungen

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

CUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1

Aufgaben: (dazugehörige Kapitel / Seitenangaben in Kursiv: Kapitel Seite Seitennummern)

RTOS Einführung. Version: Datum: Autor: Werner Dichler

Visualisierung paralleler bzw. verteilter Programme

Musterlösung Übungsblatt 1 Netzprogrammierung WS 05/06

Verteilte Systeme. Verteilte Systeme. 9 Verteilte Dateisysteme SS 2015

Rechnernutzung in der Physik. Betriebssysteme

Musterlösung Klausur SS 2004

Kommunikation von Prozessen und Threads

Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance

Einführung in das parallele Programmieren mit MPI und Java

Verteilte Systeme CS5001

Verbessertes Konzept: Monitore

2 Rechnerarchitekturen

Ein Laufzeitsystem für hochgradig parallele Simulationen

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Parallele und verteilte Programmierung

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

Client/Server-Systeme

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

... Client 1. Request. Reply. Client 2. Server. Client n. Günther Bengel Grundkurs Verteilte Systeme 3. Auflage Vieweg Verlag 2004 ISBN

Message Oriented Middleware am Beispiel von XMLBlaster

Verteilte Systeme. Verteilte Systeme. 5 Prozeß-Management SS 2016

Grundlagen der Rechnerarchitektur

Übungen zur Softwaretechnik

Inhaltsverzeichnis XII

Kurz: Stimme meinen Vorrednern zu: Angenehme Atmosphäre. Eher ein Fachgespräch als eine Prüfung. Eindeutig zu empfehlen

Interaktionsdiagramme in UML

Computeranwendung in der Chemie Informatik für Chemiker(innen) 4. Netzwerke

Geräteverwaltung: Einführung

Projektseminar Parallele Programmierung

Algorithmen II Vorlesung am

^ Springer Vi eweg. Grundkurs Betriebssysteme. Synchronisation, Prozesskommunikation, Virtualisierung. Architekturen, Betriebsmittelverwaltung,

OpenMP - Threading- Spracherweiterung für C/C++ Matthias Klein, Michael Pötz Systemprogrammierung 15. Juni 2009

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP)

SC18IM700-Tester v Einleitung

Betriebssysteme (BTS)

I Grundlagen der parallelen Programmierung 1

Einführung in COM Seite 1

Smartphone Entwicklung mit Android und Java

Remote Method Invocation

Man liest sich: POP3/IMAP

WS Parallele Prozesse. Prof. Hannelore Frank. Parallele Prozesse. PetriNetze. Synchronisation UNIX. Wettbewerb PC Krit.Abschnitt Spinlocks

6.1.2 Sequentielle Konsistenz (Lamport 1979)

Leistungskurs C++ Einführung

Parastation3. Design und Implementierung. ALiCE-Seminar 13. November Thomas Moschny

Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software

Theorie und Einsatz von Verbindungseinrichtungen in parallelen Rechnersystemen

Transkript:

Kommunikationsmodelle Dr. Victor Pankratius David J. Meder IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)

Grundlegende Kommunikationsparadigmen Klassisches Send/Receive Erweitertes Send/Receive (Virtueller) gemeinsamer Speicher: Virtual Shared Memory Methodenfernaufruf: Remote Procedure Call (RPC) Active Messages (AM) Bulk Synchronous Parallelism (BSP) Je nach verwendetem Paradigma sind andere Optimierungen möglich 2

Klassisches Send/Receive Sender Send() Automatischer Transfer Empfänger Receive() Explizite Kommunikationsaufrufe. Zweiseitige Kommunikation (Sender und Empfänger müssen beide aktiv werden.). Auch einseitige Variante: Sender kann Paket in Empfängerbereich schreiben ohne explizite Empfangsoperation (Lesen analog). Empfänger muss Bereich vorher für entfernten Zugriff freigeben. Synchrone und asynchrone Version. Bei synchroner Version kann der Sender die Laufzeit der Kommunikation nicht anderweitig verwenden. Pufferung Vorwiegend nur Kommunikation, lediglich Rendezvous von Sender- und Empfängerprozess. 3

Synchrones Send/Receive: Einzelschritte Sender Sendewunsch (Länge) empfangsbereit Empfänger Sender muss zwischenzeitlich warten Keine Überlappung von Kommunikation und Berechnung möglich Daten Bestätigungen 4

Zu bedenken Adressierung beim Sender: Endpunkt ( Port ), Prozess, Knoten. Pufferung beim Empfänger: Wie viele Daten können gesendet werden, bis zum ersten Mal Receive durchgeführt wird? Flusskontrolle: wie sorgt man dafür, dass der Sender wartet, wenn Puffer voll sind? Empfänger blockiert, falls keine Daten vorhanden. Soll Möglichkeit zum nicht-blockierenden Abfragen angeboten werden? Kann der Empfänger auf Pakete von bestimmten Sendern warten? Auf einen bestimmten Pakettyp? 5

Erweitertes Send/Receive Virtuelle Maschine aus logischen Knoten Spezielle Gruppenkommunikationsoperationen Rundruf (broadcast) Synchronisation Verteilen (scatter) Einsammeln (gather) jeweils an alle Knoten oder an Knotengruppe Bestandteil der MPI-Bibliothek 6

(Virtueller) Gemeinsamer Speicher: Virtual Shared Memory Gemeinsamer Speicher oder Adressraum Store Sender Load Empfänger Implizite Kommunikationsaufrufe Einseitige Kommunikation Synchronisationsprimitive (Semaphore, Mutex, ) im Anwendungsprogramm nötig, um geordnete Zugriffe auf gemeinsam genutzte Speicherstellen zu gewährleisten Konsistenzmodell (s.u.) für Kommunikationssystem wichtig Sender kann in der Regel weiterarbeiten, während Kommunikation zu Ende geführt wird; Sender und Empfänger laufen unabhängig. 7

Zu bedenken Bei verteiltem Speicher muss empfängerseitig ein Vorrat an Kontrollfäden (Thread-Pool) vorgehalten werden, die die eingehende Pakete verarbeiten. Diese Aufgabe kann auch von einer spezialisierten Hardware ausgeführt werden. Sync-Mechanismen/Monitore müssen effizient realisiert werden. Was passiert, wenn ein eingehendes Paket wegen einer Sperre nicht im Speicher abgelegt werden darf? Wie viel Pufferung ist möglich? Wie komfortabel/teuer soll das Cache-Konsistenz-Protokoll sein, das der Anwendung angeboten wird? 8

(Entfernter) Methodenfernaufruf (Remote) Procedure Call (RPC) (1) Sender Request Response Empfänger RPC() Process() Explizite Kommunikationsaufrufe Einseitige Kommunikation Bei synchroner Semantik wartet der Sender auf das Ergebnis. Es ist keine Parallelität möglich Auch: Asynchrone Variante Empfänger muss Kontrollfäden vorhalten, die mit jedem Aufruf (Methoden-Nummer, Parameter-Codierung) umgehen können Zeiger können nur mit besonderen Maßnahmen gesendet werden ( globaler Zeiger, Fernzugriff) 9

(Entfernter) Methodenfernaufruf (Remote) Procedure Call (RPC) (2) Sender Request Response Empfänger RPC() Process() Bei kurzen Methoden kann Sender ggf. aktiv auf die Antwort warten statt sich schlafen zu legen, d.h. die Kontrolle an das Betriebssystem zurückzugeben. Dies spart die Zeit für zwei Kontextwechsel, und ermöglicht die volle Ausnutzung der dem Sender zur Verfügung stehenden Zeitscheibe. Mit den kommunizierten Daten wechselt auch der Programmablauf vom Sender-Rechner auf den Empfänger- Rechner. 10

Zu bedenken Im objektorientierten Bereich: Proxy-Objekte, die den entfernten Aufruf wie einen lokalen aussehen lassen. Leitungsprotokoll (Serialisierung) für Parameter. Empfänger muss einen Vorrat an Kontrollfäden vorhalten, die Pakete entgegen nehmen, dekodieren und dann die Funktion im Benutzerbereich aufrufen. Pool-Größe? Zu kleiner Pool führt dazu, dass nicht alle Aufrufe abgearbeitet werden können. Zu großer Pool = Ressourcen- Verschwendung. Wechsel der Kontrollfadenidentität kann (z.b. in Java) Probleme bei maschinenübergreifender Synchronisierung machen. A wird gesperrt durch Monitor. Dann Fernaufruf an B. B ruft zurück an A, und sollte Zugriff erhalten, hat aber andere Identität (nämlich die eines der Kontrollfäden aus dem Empfangspool). 11

Active Messages (AM) (1) Sender Empfänger (System) Empfänger AM_Request() Launch_Handler() Datenübergabe Grundidee: Jeder Paketkopf enthält die Adresse eines kurzen Empfangsprogramms (Handler), das beim Empfänger im Benutzerbereich ausgeführt wird. Ähnlich einer Unterbrechung, jedoch unprivilegiert. Empfangsprogramm wird durch Unterbrechung oder durch Abfrage gestartet. liest die Paketdaten aus dem Netz und speichert sie in den Datenstrukturen der Anwendung. Explizite Kommunikationsaufrufe Einseitige Kommunikation 12

Active Messages (AM) (2) Sender Empfänger (System) Empfänger AM_Request() Launch_Handler() Datenübergabe Implizite Kommunikation auf Empfängerseite. Daten werden automatisch in die Datenstrukturen eingearbeitet. Empfangsprogramm muss Synchronisationsprimitive verwenden, um geordneten Zugriff auf Anwendungsdaten zu gewährleisten. Der Sender kann in der Regel weiterarbeiten, während Kommunikation zu Ende geführt wird. 13

Zu bedenken Kleinerer Kontrollfaden-Pool Benutzer-Funktionen greifen auf Netzwerk-Karte zu Sicherheit/Schutz? Wie stellt man sicher, dass Benutzer-Funktionen die Pakete auch abnehmen? Sonst könnte die Kommunikation blockieren. 14

Bulk Synchronous Parallelism (BSP) (1) Ein BSP-Programm ist in Superschritte (engl. supersteps) gegliedert In einem Superschritt rechnen die Prozessoren und stoßen Kommunikation an. Der Empfang wird aber erst zum Ende des Superschritts garantiert. Dazu am Superschritt-Ende eine Synchronisationsbarriere (für alle oder eine Gruppe der Prozessoren.) D.h., es wird auf die Ankunft aller gesendeten Botschaften gewartet. Prozess Kommunikation Sync-Barriere Empfang 15

Bulk Synchronous Parallelism (BSP) (2) Theoretischer Hintergrund Die PRAM-Annahme, dass eine Kommunikationsoperation genau eine Zeiteinheit dauert, ist unrealistisch. Dazu später mehr. Aber: die meisten Netzwerke können parallel zu den Prozessoren arbeiten. d.h. Superschritte werden möglichst so konstruiert, dass sie gerade so viel Kommunikationszeit benötigen, wie für die Rechnung nötig ist. 16

Bulk Synchronous Parallelism (BSP) (3) Kommunikation Empfang Prozess Sync-Barriere Nächste Sync-Barriere besser schon hier! Sender und Empfänger laufen unabhängig (bis auf regelmäßige Synchronisationen) 17

Zu bedenken Effiziente Synchronisierung nötig (per Baum). Pufferung der gesamten Kommunikation eines Superschritts erforderlich. Der Sender kann/soll (!) weiterarbeiten, während die Kommunikation zu Ende geführt wird. Effizienzeinbußen durch zu späte Synchronisationsbarrieren. Vermeidbar, falls die Rechenschritte sofort nach ihrem Abschluss selbst die Synchronisation starten. 18