2.4 Kommunikationsdienste des Betriebssystems

Slides:



Advertisements
Ähnliche Präsentationen
programmiert April-Juni 2003 von Knut Riechmann
Advertisements

Message Passing Interface (MPI)
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Kapitel 4: Design von Client/Server-Software
1 Spezielle Packages des Java SDK (1.4) java.nio.
6.3 Ereignisbasierte Systeme Ereignis (event) : eine Ereignis-Quelle (event source, publisher) generiert Benachrichtigung (event notification), an der.
4 Verteilte Algorithmen
2 Kommunikationssysteme bieten Kommunikationsdienste an, die das Senden und Empfangen von Nachrichten erlauben (sending & receiving messages) bestehen.
4.2 Gruppenkommunikation (group communication) Bedeutet:Sendeoperation bezieht sich auf mehrere Adressaten - die Mitglieder einer Prozeßgruppe (process.
Vs Klassifizierung von Kommunikationsdiensten synonym:Nachrichtensystem/dienst(message service) Kommunikationssystem/dienst(communication service)
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
Der SmartPump-Server Ein tolles Stück Technik. 2Der SmartPump Server Architektur Kontrollkommunikation RTP-Videostrom Client Server RTSP Pipeline Daten.
Internetzugriff mit Strings und Streams
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
Konfiguration eines VPN Netzwerkes
Anwendungen in Rechnernetzen Tobias Wawryniuk
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
Java: Grundlagen der Sprache
OpenMP Präsentation im Rahmen des Seminars
7 Verteilungsabstraktion
Bs Kommunikation Kommunikation zwischen Benutzerprozessen (IPK) stellt andere Anforderungen als auftragsorientierte Kommunikation in mikrokernbasierten.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Multimedia - Datenformate
Einführung in die Netzwerktechnik 1 Der ARP-Prozess
1. Einführung Lernziele: Auffrischen des Wissens aus Rechnernetze
Martin MauveUniversität Mannheim1 3.6 User Datagram Protocol (UDP) RFC 768. J. Postel. User Datagram Protocol unzuverlässiges Transportprotokoll.
Datenströme DVG Datenströme.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
CCNA2 – Module 11 Access Control Lists
Entwicklung verteilter eingebetteter Systeme - Einführung
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 4 Folie 2 Message Passing mittels Sockets (1) s.a.
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
Rechnerkommunikation I
Referent: Kiron Mirdha Betreuer: Rene Hilden Juli 2012
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Punkt-zu-Punkt-Kommunikation Oswald Haan
Socket-Programmierung
PSI - Überblick und Szenarien
Dateisysteme Marcel Waldvogel. Marcel Waldvogel, IBM Zurich Research Laboratory, Universität Konstanz, , 2 Dateisysteme Was ist eine Datei?
Julia Grabsch Florian Hillnhütter Fabian Riebschläger
Information und Kommunikation
Netzwerkprogrammierung
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Eine Einführung Oswald Haan
Präsentation von Lukas Sulzer
Travelling Salesman Problem (TSP)
Netzwerke.
Interprozess- kommunikation (IPC)
Meldungen über Ethernet mit FINS/UDP
Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Punkt-zu-Punkt-Kommunikation Oswald Haan
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Kollektive Operationen Oswald Haan
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
7.2.4 Klassifikation mobilen Codes Nicht vergessen:  Sowohl das Fernkopieren als auch die Migration von Objekten setzt voraus, daß der Code entweder am.
Lösungen 1. Zu einem Dienst gehören immer: Diensterbringer (Server), Dienstbenutzer (Client) und Protokoll.
Schutzvermerk nach DIN 34 beachten TCP / IP. Schutzvermerk nach DIN 34 beachten TCP / IP und das OSI-Referenzmodell Process / Application Host-to-Host.
Kirsten Kropmanns Allgemeine Technologien II 9. März 2009
Vs Gruppenkommunikation (group communication) Bedeutet:Sendeoperation bezieht sich auf mehrere Adressaten - die Mitglieder einer Prozessgruppe.
Parallel Virtual Machine (PVM) Überblick PVM unterstützt: –verteilungstransparente Programmierung –Kommunikation durch Nachrichten –einfache Lastverteilung.
Vs41 4 Verteilte Algorithmen. vs42 Prozesse als Systemkomponenten:  Spezifikation eines Prozesses ? (Vgl. Spezifikation eines ADT) syntaktisch:z.B. Ports.
C Tutorium – Shared Memory – Knut Stolze. 2 Shared Memory Ein Speicherbereich, auf den mehrere Prozesse Zugriff haben – Also kein privater Speicher –
Paketübertragung mit Sockets Was, wohin? Adressierung durch java.net.InetAddress Bsp: adr=InetAddress.getByName(“localhost“); Pakete sind java.net.DatagramPacket.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Punkt-zu-Punkt-Kommunikation Oswald Haan
Lisa Huber DHBW Mannheim
PVM – Parallel Virtual Machine Michael Springmann.
Multiprocessing mit OpenMPI Marius Albath. Vorlesung Betriebssysteme, Was ist OpenMPI Was ist OpenMPI OpenMPI Standard Setup OpenMPI Standard.
Vs Kommunikationsdienste des Betriebssystems Interprozesskommunikation (inter-process communication, IPC) am Beispiel Unix HW BS Prozesse Kommunizierende.
Vs Klassifizierung von Kommunikationsdiensten synonym:Nachrichtensystem/dienst(message service) Kommunikationssystem/dienst(communication service)
2 Kommunikationssysteme
 Präsentation transkript:

2.4 Kommunikationsdienste des Betriebssystems Interprozesskommunikation (inter-process communication, IPC) am Beispiel Unix Prozesse Kommunizierende Threads BS BS HW HW vs2.4

Interprozesskommunikation ist sprachunabhängig: - Nachrichten sind ungetypt, d.h. Bytes oder Byte-Folgen, - nackte Semantik ohne syntaktischen Zucker, - u.U. verschiedene Semantiken zur Auswahl. Pipes, Named Pipes, Message Queues, ... für lokale IPC Sockets für netzweite IPC vs2.4

Pipe = Simplex-Kanal (Solaris: Duplex!) verbunden mit einem Eingabe- und einem Ausgabe-Port (typischerweise verschiedener Prozesse) Senden: int write(int port, char *buffer, int length) Empfangen: int read(int port, char *buffer, int length) Adressierung: portbezogen Konfigurierung: dynamisch durch Programm: Erzeugung von Prozessen und Pipes, Vererben von Ports bei Prozesserzeugung Semantik: zuverlässiger Byte-Strom mit begrenzter Pufferung; read erfolgreich, sobald mindestens 1 Byte vorliegt; write erfolgreich, sobald length Bytes frei; auch nichtblockierende Versionen. vs2.4

Socket = Duplex-Port (Senden und Empfangen) 2.4.2 Sockets (socket = Steckdose) Socket = Duplex-Port (Senden und Empfangen) für lokale und netzweite IPC mit unterschiedlich wählbaren Semantiken Adressierung: portbezogen Konfigurierung: dynamisch durch Programm: Erzeugung lokaler Sockets, Binden an Sockets anderer Prozesse Semantik: zuverlässiger Byte-Strom oder Einzelnachrichten ohne Reihenfolge- garantie und Schutz gegen Verlust vs2.4

 Erzeugung eines – ungebundenen – Socket: int socket(int family, int type, int protocol) prozeßlokale Protokoll- Dienst Protokoll Port-Nummer Familie (i.d.R. 0 [Null]) Familie Dienst PF_UNIX PF_INET PF_NS ....... SOCK_STREAM  TCP SPP SOCK_DGRAM UDP IDP SOCK_RAW IP vs2.4

Benennung eines Socket mit netzweit gültiger Adresse: int bind(int socket, struct sockaddr *address, int addrlen) (Protokollfamilie, stationslokale Socket-Nummer , Stationsadresse) z.B. PF_INET, a-16-bitPortNumber, a-32-bitHostId vs2.4

Dienst SOCK_DGRAM für Internet: verbindungslose, unzuverlässige Nachrichtenübertragung mit UDP int sendto(int socket, char *buffer, int length, int flags, struct sockaddr *to, int addrlen) Absender socket sendet an Adressat to int recvfrom(int socket, char *buffer, int length, int flags, struct sockaddr *from, int *addrlen) socket empfängt an ihn gesendete Nachricht sowie Absender vs2.4

Dienst SOCK_STREAM für Internet: verbindungsorientiert - zuverlässiger Byte-Strom mit TCP Konfigurierung ist an Szenario Auftraggeber/Auftragnehmer orientiert: Initiative geht von einem Klienten aus ! Nach erfolgreich hergestellter Verbindung Nachrichtenaustausch mittels (Klient) (Server) write(s1,request,length); read(s3,request,length); ... write(s3,reply,length); read(s1,reply,length); vs2.4

Herstellung der Verbindung: (Klient) (Server) s1 = socket(...); s2 = socket(...); [ bind(s1,..); ] bind(s2,&local,l); listen(s2, qlength); connect(s1,&dest,l); s3 = accept(s2,&source,&l); write(s1,...); read(s3,...); ... ... close(s1); close(s3); ( Statt write/read auch send/recv(.,.,.,flags) ) vs2.4

Java unterstützt das Arbeiten mit Sockets durch Bibliotheksklassen ServerSocket, DatagramSocket, MulticastSocket, ..... siehe java.net.* vs2.4

Verbindungsbearbeitung/ 2.4.3 Nichtsequentielle Server Beachte: Server operiert in nichtsequentieller Umgebung Verbindungsbearbeitung/ Auftragsbearbeitung sequentiell, exklusiv (Prozess  Monitor!) nichtsequentiell, überlappend je Verbindung je Verbindung ein Prozess ein Thread vs2.4

Server kann auch mehrere Dienste anbieten, z.B. für jeden Dienst ein eigener Port ! a) sequentiell: disjunktives Warten auf Verbindungswünsche b) nichtsequentiell: je Port ein (statischer) Thread c) nichtsequentiell: disjunktives Warten + (dynamische) Threads d) nichtsequentiell: disjunktives Warten + Prozesse vs2.4

auf Verbindungsanforderungen über mehrere Sockets 2.4.4 Disjunktives Warten auf Verbindungsanforderungen über mehrere Sockets - allgemein: auf Empfangs/Sende-Möglichkeit über Kanäle ! Alternativen: wiederholtes nichtblockierendes Senden/Empfangen („polling“) nichtblockierendes Senden/Empfangen mit Signalisierung durch Software-Unterbrechung (Unix: signal SIGIO) - mühsam !  disjunktives Warten mit Systemaufruf (Unix:) select vs2.4

bei Hardware-Heterogenität 2.4.5 Datenkonvertierung bei Hardware-Heterogenität Byte-Reihenfolge, z.B. für 16-Bit-Ganzzahlen: „little-endian“ (Intel,..) „big-endian“ (Motorola,..) Zeichen: ASCII, EBCDIC, ... Gleitkommazahlen: IEEE-Standard, ... a+1 a a a+1 vs2.4

Ad-hoc-Umwandlung, z.B. „receiver makes it right“ 2 Alternativen: Ad-hoc-Umwandlung, z.B. „receiver makes it right“ Verwendung einer kanonischen Darstellung auf dem Netz (external data representation) Auch Felder, Verbunde, Objekte, ... behandeln ! Bezug zu: - Typsystem der Programmiersprache - vom Übersetzer gewählte interne Darstellung - evtl. Sprachheterogenität ! (Wir kommen in einem späteren Kapitel darauf zurück.) [ Zuständig gemäß OSI-Referenzmodell: Presentation Layer (6) ] vs2.4

Für Internet Unterstützung durch Bibliotheksroutinen: in C für Ganzzahlen: u_long htonl(u_long number); „host to network long“ u_short htons(u_short number); u_long ntohl(u_long number); u_short ntohs(u_short number); vs2.4

Java: automatische Umcodierung bei Benutzung von Socket-Objekten OutputStream os = mySocket.getOutputStream(); ObjectOutput out = new ObjectOutputStream(os); out.writeInt(i); out.writeFloat(f); out.writeBoolean(b); ... out.writeObject(o); // o must be Serializable or ... Entsprechend für Eingabe ... vs2.4

2.5 Kommunikationsplattformen - in C, Fortran, ... über Bibliotheken benutzbar Ziele: Nachrichtendienst unabhängig von Betriebssystem und Netz automatische Typkonversion für übertragene Daten komfortable Prozessverwaltung und damit Eignung für Parallelprogrammierung im Netz Plattform . . . . . . . BS . . . . . . . HW vs2.4

„Parallel Virtual Machine“ 2.5.1 PVM „Parallel Virtual Machine“ gepufferte, blockierende, reihenfolgetreue Übertragung von Einzelnachrichten prozeßbezogene Adressierung, auch Rundsendungen Unterstützung von Packen/Entpacken von Nachrichten (marshaling) Dynamische Erzeugung von Prozessen im Netz interaktive Steuerung der Konfiguration vs2.4

„Message Passing Interface“ 2.5.2 MPI „Message Passing Interface“ Entwickelt für Parallelrechner mit verteiltem Speicher (Mehrrechnersystem, multicomputer) Erweitert für Workstation Clusters und Rechnernetze Unterstützung für SPMD – Single Program, Multiple Data:  Jeder Prozess(or) arbeitet mit gleichen Programm,  aber auf jeweils eigenem Fragment der Daten,  mit Interaktion über Nachrichten. vs2.4

Adressierung ist prozessbezogen: int MPI_Send(void* message, int count, MPI_Datatype elemType, int destProc, int tag, MPI_Comm communicator) entspricht send message to destProc (Feld-Typ) int MPI_Recv(void* message, int count, MPI_Datatype elemType, int srcProc, int tag, MPI_Comm communicator, MPI_Status* status) entspricht recv message from srcProc srcProc kann auch MPI_ANY_SOURCE sein, status enthält Prozessnummer des Senders vs2.4

Adressierung auch prozessgruppenbezogen möglich: int MPI_Bcast(void* message, int count, MPI_Datatype elemType, int root, MPI_Comm communicator) Falls ausführender Prozeß = root , Senden der Rundsendung (multicast) message an die Mitglieder der Gruppe communicator Sonst Empfangen einer Rundsendung vs2.4

Pufferung ist systemspezifisch/wählbar Semantik: Pufferung ist systemspezifisch/wählbar Empfangsfolge: zuverlässig reihenfolgetreue Nachrichten Synchronisation: blockierend, aber auch nichtblockierende Varianten: int MPI_Isend(..., MPI_Request* request) int MPI_Irecv(..., MPI_Request* request) ( I für immediate) und Synchronisation mittels int MPI_Wait(MPI_Request* request, MPI_Status* status) (statt über Software-Unterbrechungen !) vs2.4

Alle n beteiligten Rechner erhalten und starten eine Kopie eines Konfigurierung Alle n beteiligten Rechner erhalten und starten eine Kopie eines MPI-basierten Programms; die n gestarteten Prozesse verhalten sich ähnlich, aber nicht identisch (abhängig von ihrer Identität!), operieren auf jeweils auf einer Teilmenge der Daten und interagieren dabei über Nachrichten. vs2.4