PowerPoint-Pr - PowerPoint PPT Presentation

1 / 24
About This Presentation
Title:

PowerPoint-Pr

Description:

Title: PowerPoint-Pr sentation Author: Klaus-Peter L hr Last modified by: lohr Created Date: 10/17/2001 2:49:52 PM Document presentation format – PowerPoint PPT presentation

Number of Views:71
Avg rating:3.0/5.0
Slides: 25
Provided by: Klau106
Category:

less

Transcript and Presenter's Notes

Title: PowerPoint-Pr


1
2.4 Kommunikationsdienste des Betriebssystems
Interprozesskommunikation (inter-process
communication, IPC) am Beispiel Unix
Prozesse
Kommunizierende Threads
BS
BS
HW
HW
2
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
2.4.1 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 dynami
sch 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
2.4.2 Sockets (socket Steckdose)
Socket Duplex-Port (Senden und
Empfangen) für lokale und netzweite IPC mit
unterschiedlich wählbaren Semantiken Adressierun
g portbezogen Konfigurierung dynamisch durch
Programm Erzeugung lokaler Sockets, Binden
an Sockets anderer Prozesse Semantik zuverlässi
ger Byte-Strom oder Einzelnachrichten ohne
Reihenfolge- garantie und Schutz gegen
Verlust
5
Erzeugung eines ungebundenen Socket int
socket(int family, int type, int
protocol) prozeßlokale Protokoll- Dienst Protoko
ll 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 ?
.......
6
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
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
Dienst SOCK_STREAM für Internet verbindungsorie
ntiert - zuverlässiger Byte-Strom mit
TCP Konfigurierung ist an Szenario
Auftraggeber/Auftragnehmer orientiert Initia
tive geht von einem Klienten aus ! Nach
erfolgreich hergestellter Verbindung
Nachrichtenaustausch mittels (Klient) (Serve
r) write(s1,request,length) read(s3,reques
t,length) ... write(s3,reply,length) r
ead(s1,reply,length)
9
Herstellung der Verbindung (Klient) (Serve
r) s1 socket(...) s2 socket(...)
bind(s1,..) bind(s2,local,l) listen(s
2, 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
Java unterstützt das Arbeiten mit Sockets durch
Bibliotheksklassen Socket, ServerSocket,
DatagramSocket, MulticastSocket, ..... sieh
e java.net.
11
2.4.3 Nichtsequentielle Server
Beachte Server operiert in nichtsequentieller
Umgebung
Verbindungsbearbeitung/ Auftragsbearbeitung
nichtsequentiell, überlappend
sequentiell, exklusiv (Prozess ? Monitor!)
je Verbindung je Verbindung ein Prozess ein
Thread
12
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
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

14
2.4.5 Datenkonvertierung bei Hardware-Heterogeni
tät
  • Byte-Reihenfolge, z.B. für 16-Bit-Ganzzahlen
  • little-endian (Intel,..)
  • big-endian (Motorola,..)
  • Zeichen ASCII, EBCDIC, ...
  • Gleitkommazahlen IEEE-Standard, ...

a1 a
a a1
15
  • 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)

16
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
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.wr
iteObject(o) // o must be Serializable or
... Entsprechend für Eingabe ...
18
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
19
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

20
2.5.2 MPI Message Passing Interface
Entwickelt für Parallelrechner mit verteiltem
Speicher (Mehrrechnersystem, multicomputer) Er
weitert 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
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
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
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
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.
Write a Comment
User Comments (0)
About PowerShow.com