Multiprozessoren mit verteiltem Speicher
Allgemeine Rechnerorganisation
Nachrichtenorientiertes Programmiermodell (Message Passing Model)
Message-passing Primitive
Synchrones Message-Passing
Sender blockiert, bis die Nachricht beim Empfänger angekommen ist.
Ebenso muss der Empfänger blockieren, bis die Nachricht empfangen worden ist und in den gewünschten lokalen Speicher kopiert worden ist
Bsp
- A=10 wird an den Empfänger P2 geschickt
- P2 muss blockieren, bis der Inhalt der Nachricht (10) in die lokale Variable B kopiert worden ist.
Deadlock-Gefahr!!!!
- Der Sender und der Empfänger blockieren, bis die Nachrichtenübertragung beendet ist, d.h. bis ein korrespondierendes
SEND
/RECV
Paar ausgeführt ist - P1 und P2 sind blockiert bei ihren jeweiligen
SEND
-Primitiven, da beide auf ihr korrespondierendesRECV
warten. 🤪
- Der Sender und der Empfänger blockieren, bis die Nachrichtenübertragung beendet ist, d.h. bis ein korrespondierendes
Kombination von Synchronisation und Kommunikation in einer Primitive kann zu L eistungsverlust führen!
Asynchrones Message-Passing
💡 Überlappung von Kommunikation und Berechnung
- Blockierendes asynchrones
SEND
- Gibt die Kontrolle an den Sende-Prozess zurück, wenn
- die zu versendenden Daten in einem Puffer kopiert worden sind und
- nicht mehr durch die Berechnung verändert werden können
- Blockierendes asynchrones
RECV
- Gibt ebenso die Kontrolle NICHT an den Empfangsprozess zurück, bis die Nachricht in einen lokalen Adressraum gespeichert worden ist
- Nichtblockierende asynchrones Kommunikationsprimitive
- Die Kontrolle wird SOFORT an den Sende- bzw. Empfangsprozess zurückgegeben und der Datentransfer läuft im Hintergrund
- Probe-Funktionen
- Prüfen ob Daten vom lokalen Adressraum des Senders in einen Puffer kopiert worden sind, bzw. ob der Empfänger die Daten kopiert hat
- Gibt die Kontrolle an den Sende-Prozess zurück, wenn