Wat is het verschil tussen de Message Passage en Shared Memory Concurcy-modellen?

Corrigeer me als ik het mis heb, maar ik ben verrast dat dit hier niet eerder is gevraagd …


Antwoord 1, Autoriteit 100%

Het is een vrij eenvoudig verschil. In een gedeelde geheugenmodel werken meerdere werknemers allemaal op dezelfde gegevens. Dit opent veel van de concurrency-problemen die gebruikelijk zijn in parallelle programmering.

Message Passing Systems maken werknemers communiceren via een berichtensysteem. Berichten houden iedereen gescheiden, zodat werknemers elkaars gegevens niet kunnen wijzigen.

Met analogie, laten we zeggen dat we samen met een team op een project werken. In één model zijn we allemaal druk rond een tafel, met al onze papieren en gegevens. We kunnen alleen communiceren door dingen op tafel te veranderen. We moeten voorzichtig zijn om niet allemaal te proberen op hetzelfde stuk gegevens tegelijk te werken, of het zal verwarrend worden en dingen worden vermengd.

In een Message Passing-model zitten we allemaal aan onze bureaus, met onze eigen set papieren. Wanneer we willen, kunnen we een paper doorgeven aan iemand anders als een “bericht”, en die werknemer kan nu doen wat ze willen. We hebben alleen maar toegang tot wat we voor ons hebben, dus we hoeven ons nooit zorgen te maken dat iemand erover gaat reiken en een van de cijfers te veranderen terwijl we in het midden van de samenvatting zijn.

OK, dwaze analogie!


Antwoord 2, Autoriteit 17%

  1. in het gedeelde geheugenmodel, geheugen wordt gedeeld door samenwerkende processen, die informatie kunnen uitwisselen door gegevens te lezen en te schrijven, maar in de berichten van het bericht vindt plaats door middel van berichten die worden uitgewisseld tussen de samenwerkende processen.
  2. Gedeelt geheugen helpt processen tegelijkertijd uit te voeren, maar het doorgeven van het bericht kan niet.
  3. De mogelijkheid om berichten door te geven heeft twee bewerkingen: verzenden (bericht) en ontvangen (bericht). Het proces heeft een vaste of variabele grootte.
  4. Het doorgeven van berichten is handig voor het uitwisselen van kleinere hoeveelheden gegevens, omdat er geen conflicten hoeven te worden vermeden. Het doorgeven van berichten is ook gemakkelijker te implementeren dan gedeeld geheugen voor communicatie tussen processen.
  5. In systemen met gedeeld geheugen zijn systeemaanroepen alleen nodig om regio’s met gedeeld geheugen tot stand te brengen. Als het gedeelde geheugen eenmaal tot stand is gebracht, worden alle toegangen behandeld als routinematige geheugentoegangen en is er geen hulp van de kernel vereist.

Sneller

Gedeeld geheugen zorgt voor maximale snelheid en gemak van communicatie, omdat dit kan worden gedaan met geheugensnelheden binnen een computer. Gedeeld geheugen is sneller dan het doorgeven van berichten, aangezien systemen voor het doorgeven van berichten doorgaans worden geïmplementeerd met behulp van systeemaanroepen en dus de meer tijdrovende taak van kernelinterventie vereisen.


Antwoord 3, autoriteit 10%

Modellen voor het doorgeven van berichten (bijvoorbeeld Erlang) hebben geen gedeelde status; alle synchronisatie en communicatie gebeurt door berichten uit te wisselen. Modellen met gedeeld geheugen communiceren door te lezen/schrijven naar blokken met gedeeld geheugen, die worden beschermd door semaforen of iets dergelijks.


Antwoord 4, autoriteit 4%

Het doorgeven van berichten is een goede methode om gegevens te rechtvaardigen, maar het heeft een trage responstijd voor snellere communicatie. Maar in het model met gedeeld geheugen worden gegevens uit één geheugen gehaald en kan een werkgroep ander werk doen over dezelfde gegevens


Antwoord 5, autoriteit 3%

De doorvoer van het berichtendoorgiftesysteem is mogelijk te laag voor sommige toepassingen die een snelle reactietijd vereisen, maar als u een hogere snelheid of realtime verwerking nodig heeft, kunt u een gedeeld geheugensysteem gebruiken.


Antwoord 6, autoriteit 2%

Hoewel u vraagt naar de verschillentussen het model voor het doorgeven van berichten en het model voor gedeeld geheugen en al goede antwoorden hebt gekregen over hun prestaties, manieren om informatie uit te wisselen en problemen met gelijktijdigheid, zou ik graag wijs erop dat:

Er kunnen geenfundamentele verschillen tussen hen zijn met betrekking tot hun berekenbaarheid (onder bepaalde voorwaarden).

Je kunt een gedeeld geheugen simuleren via het onderliggende systeem voor het doorgeven van berichten. Dit maakt het mogelijk om het gedeelde geheugenmodel te zien als een taal op een hoger niveau voor het ontwerpen van algoritmen in asynchrone gedistribueerde berichtendoorgiftesystemen.

In het bijzonder laat dit artikel ABD@JACM’95zien dat

Elk wachtvrij algoritme dat is gebaseerd op atomaire, single-writer (en multi-writer) multi-reader registers kan automatisch worden geëmuleerd in berichtenverkeerssystemen, op voorwaarde dat ten minste een meerderheid van de processors niet defect is en verbonden blijft . De overhead die door deze emulaties wordt geïntroduceerd, is polynoom in het aantal processors in het systeem.


Antwoord 7, autoriteit 2%

De reeds gegeven antwoorden zijn informatief, maar de meeste vermelden het idee dat gedeeld geheugen sneller is dan het doorgeven van berichten, wat eigenlijk een vrij naïeve bewering is. In elk echt systeem dat iets nuttigs doet, heeft gedeelde geheugentoegang vergrendelingsmechanismen nodig om de toegang vanuit afzonderlijke threads te regelen, wat bijna altijd LANGZAMER verloopt dan het implementeren van hetzelfde systeem met behulp van het doorgeven van berichten.


Antwoord 8

Om onderscheid te maken tussen het doorgeven van berichten en gedeeld geheugen, overweeg vijf dingen:

  1. communicatie:- In het geval van het doorgeven van berichten, is communicatie afhankelijk van de programmeur, zoals het proces waarmee het zal communiceren.
    Maar in het geval van gedeelde geheugencommunicatie wordt automatisch uitgevoerd.
  2. Data Distribution: -M.P (handmatig)
    s.m (automatisch)
  3. H / W Support: – M.P (Simple)
    S. (uitgebreid omdat het intelligent moet zijn om het interprocess automatisch te detecteren)
  4. correctheid: -M.P (moeilijk)
    S.M (Minder moeilijk)
  5. prestaties: -M.P (moeilijk)
    S.M (zeer moeilijk) `

Antwoord 9

Gedeelde geheugen
S / m vereist communicatieproces om wat variabele te delen. De processen zoals verwacht om informatie uit te wisselen via het gebruik van deze gedeelde variabelen. In een gedeelde geheugenregeling De verantwoordelijkheid voor het verstrekken van communicatie rust bij de aanvraagprogrammeurs. Het besturingssysteem alleen NNEeds om gedeelde geheugen te bieden.


Antwoord 10

deed een test in een cursus bij DTU-berekening PI, en MPI (Message Passing) over het algemeen beter dan Pthreads of OpenMP (Share Memory) op onze HPC.

Other episodes