Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Vs2.41 2.4 Kommunikationsdienste des Betriebssystems Interprozesskommunikation (inter-process communication, IPC) am Beispiel Unix HW BS Prozesse Kommunizierende."—  Präsentation transkript:

1 vs Kommunikationsdienste des Betriebssystems Interprozesskommunikation (inter-process communication, IPC) am Beispiel Unix HW BS Prozesse Kommunizierende Threads

2 vs2.42 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

3 vs Pipes 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.

4 vs 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

5 vs2.45 Erzeugung eines – ungebundenen – Socket: int socket(int family, int type, int protocol) prozeßlokaleProtokoll-DienstProtokoll Port-NummerFamilie(i.d.R. 0 [Null]) Familie Dienst PF_UNIX PF_INET PF_NS SOCK_STREAM TCPSPP SOCK_DGRAM UDP IDP SOCK_RAW IP

6 vs2.46 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

7 vs2.47 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

8 vs2.48 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);

9 vs2.49 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) )

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

11 vs Nichtsequentielle Server Beachte: Server operiert in nichtsequentieller Umgebung Verbindungsbearbeitung/ Auftragsbearbeitung sequentiell, exklusiv (Prozess Monitor!) nichtsequentiell, überlappend je Verbindung ein Prozessein Thread

12 vs2.412 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

13 vs 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

14 vs 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

15 vs Alternativen: 1.Ad-hoc-Umwandlung, z.B. receiver makes it right 2.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) ]

16 vs2.416 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);

17 vs2.417 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...

18 vs 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

19 vs 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

20 vs 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.

21 vs2.421 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

22 vs2.422 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

23 vs2.423 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 !)

24 vs2.424 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.


Herunterladen ppt "Vs2.41 2.4 Kommunikationsdienste des Betriebssystems Interprozesskommunikation (inter-process communication, IPC) am Beispiel Unix HW BS Prozesse Kommunizierende."

Ähnliche Präsentationen


Google-Anzeigen