next up previous
Next: 3.2.2.3 Monitorkonzept Up: 3.2.2 Semaphoren Previous: 3.2.2.1 Semaphorenkonzept

3.2.2.2 Message Passing

Beim Message Passing ($=$ Kommunikation wird zwischen blockierender und nichtblockierender Kommunikation unterschieden :


 
Abbildung 3.9: Blockierende Kommunikation
\begin{figure}
\begin{center}
\unitlength0.07\textwidth
\begin{picture}
(6,4)
...
...,0){0.4}}
\put(3.9,2){\vector(1,0){0.5}}
\end{picture}\end{center}
\end{figure}

Bei der blockierenden Kommunikation warten alle (in der Regel 2) beteiligten Prozesse solange bis alle Prozesse ihre Bereitschaft zum Daten-/Nachrichtenaustausch signalisiert haben. Nebenstehende Kommunikation wirkt für die Prozesse $P_1$ und $P_2$ wie 2 Semaphoren :
\ensuremath{\bullet} V($P_1$) : Bereit für SEND
\ensuremath{\bullet} P($P_1$) : Warte, bis $P_1$ empfangsbereit ist.
\ensuremath{\bullet} V($P_2$) : Bereit für RECV
\ensuremath{\bullet} P($P_2$) : Warte, bis $P_2$ sendebereit ist.



 
Abbildung 3.10: Nichtblockierende Kommunikation
\begin{figure}
\begin{center}
\unitlength0.07\textwidth
\begin{picture}
(6,4)
...
...){3}}
%
\put(1.5,3){\vector(1,0){2.9}}
%
\end{picture}\end{center}
\end{figure}

Bei der nichtblockierenden Kommunikation senden bzw. empfangen die Prozesse ihre Daten völlig unabhängig vom Status der anderen Prozesse. Während das Semaphorenkonzept typisch für Parallelrechner mit gemeinsamem Speicher (Shared Memory) ist und meist vom Programmierer unbemerkt das Resourcenmanagement erledigt, tritt das Message Passing bei Parallelrechnern mit verteiltem Speicher (Distributed Memory) auf und muß zumindest teilweise vom Programmierer selbst erledigt werden.
next up previous
Next: 3.2.2.3 Monitorkonzept Up: 3.2.2 Semaphoren Previous: 3.2.2.1 Semaphorenkonzept
Gundolf Haase
1998-12-22