Jaka jest różnica między modelami współbieżności przekazywania wiadomości a pamięcią współbieżną?

Popraw mnie, jeśli się mylę, ale dziwię się, że nie pytano o to wcześniej ...

Author: blank, 2009-12-05

10 answers

To dość prosta różnica. W modelu pamięci współdzielonej wielu pracowników działa na tych samych danych. Otwiera to wiele problemów związanych z współbieżnością, które są powszechne w programowaniu równoległym.

Systemy przekazywania wiadomości sprawiają, że pracownicy komunikują się za pośrednictwem systemu wiadomości. Wiadomości są oddzielone od siebie, więc pracownicy nie mogą modyfikować swoich danych.

Przez analogię, powiedzmy, że pracujemy razem z zespołem nad projektem. W jednym modelu wszyscy jesteśmy zatłoczeni wokół stół, z wszystkimi dokumentami i danymi. Możemy się komunikować tylko zmieniając rzeczy na stole. Musimy być ostrożni, aby nie wszyscy próbowali operować na tym samym fragmencie danych na raz, albo zrobi się to mylące i rzeczy się pomieszają.

W modelu przekazywania wiadomości wszyscy siedzimy przy biurkach, z własnym zestawem Papierów. Kiedy chcemy, możemy przekazać papier komuś innemu jako "wiadomość", a pracownik może teraz z nim robić, co chce. Mamy dostęp tylko do czegokolwiek mamy przed sobą, więc nigdy nie musimy się martwić, że ktoś dotrze i zmieni jedną z liczb, podczas gdy my jesteśmy w trakcie ich podsumowania.

Ok, głupia analogia!

 112
Author: Chris Pitman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-05 20:15:01
  1. w modelu pamięci współdzielonej pamięć jest współdzielona przez współpracujące procesy, które mogą wymieniać informacje poprzez odczyt i zapis danych, ale w przekazywaniu wiadomości komunikacja odbywa się za pomocą komunikatów wymienianych między współpracującymi procesami.
  2. pamięć współdzielona pomaga uruchamiać procesy jednocześnie, ale przekazywanie wiadomości nie może.
  3. funkcja przekazywania wiadomości ma dwie operacje: send (message) I receive (message). Proces, którego rozmiar jest stały lub zmienny.
  4. Wiadomość przekazywanie jest przydatne do wymiany mniejszych ilości danych, ponieważ nie trzeba unikać konfliktów. Przekazywanie wiadomości jest również łatwiejsze do zaimplementowania niż dzielona pamięć do komunikacji międzyprocesowej.
  5. w systemach pamięci współdzielonej wywołania systemowe są wymagane tylko do ustanowienia regionów pamięci współdzielonej. Po ustanowieniu pamięci współdzielonej wszystkie dostępy są traktowane jako rutynowe dostępy do pamięci i nie jest wymagana żadna pomoc ze strony jądra.

Faster

Pamięć współdzielona pozwala na maksymalne szybkość i wygoda komunikacji, jak to można zrobić z prędkością pamięci, gdy w komputerze. Pamięć współdzielona jest szybsza niż przekazywanie wiadomości, ponieważ systemy przekazywania wiadomości są zazwyczaj implementowane przy użyciu wywołań systemowych, a tym samym wymagają bardziej czasochłonnego zadania interwencji jądra.

 18
Author: Farah Nazifa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Modele przekazywania komunikatów (na przykład Erlang) nie mają wspólnego stanu; Cała synchronizacja i komunikacja odbywa się poprzez wymianę komunikatów. Modele pamięci dzielonej komunikują się poprzez odczyt/zapis do bloków pamięci dzielonej, które są chronione przez semafory lub podobne.

 10
Author: JesperE,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-05 20:09:33

Przekazywanie wiadomości jest dobrą metodą uzasadniania danych, ale ma powolny czas odpowiedzi dla szybszej komunikacji.Jednak w modelu pamięci współdzielonej dane są wyodrębniane z jednej pamięci i grupa robocza może wykonywać różne prace nad tymi samymi danymi

 5
Author: ravindra pratap ssiet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-05 09:06:02

Przepustowość systemu przekazywania wiadomości może być zbyt niska dla niektórych aplikacji, które wymagają szybkiego czasu odpowiedzi, ale jeśli potrzebujesz większej prędkości lub przetwarzania w czasie rzeczywistym, możesz użyć systemu pamięci współdzielonej.

 3
Author: juned ahmed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-04 02:35:44

Chociaż pytacie o różnice między modelem przekazywania wiadomości a modelem pamięci współdzielonej i otrzymaliście już dobre odpowiedzi dotyczące ich wydajności, sposobów wymiany informacji i kwestii współbieżności, chciałbym zwrócić uwagę, że:

Mogą istnieć nie podstawowe różnice między nimi pod względem ich obliczeniowości (pod pewnymi warunkami).

Możesz symulować pamięć współdzieloną na podstawie system przekazywania wiadomości. Umożliwia to postrzeganie modelu pamięci współdzielonej jako języka wyższego poziomu do projektowania algorytmów w asynchronicznych rozproszonych systemach przekazywania wiadomości.

W szczególności ten artykuł ABD@JACM'95 pokazuje, że

Każdy algorytm bez czekania oparty na atomowych, jednowarstwowych (i wielowarstwowych) rejestrach multi-reader może być automatycznie emulowany w systemach przekazujących wiadomości, pod warunkiem, że przynajmniej większość procesorów nie jest wadliwa i pozostań w kontakcie. Narzut wprowadzany przez te emulacje jest wielomianowy w liczbie procesorów w systemie.

 2
Author: hengxin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-06 13:40:00

Aby odróżnić przekazywanie wiadomości od pamięci dzielonej rozważ pięć rzeczy:

  1. komunikacja: - w przypadku przekazywania wiadomości komunikacja jest zależna od programisty, z jakim procesem będzie się komunikować. jednak w przypadku pamięci współdzielonej komunikacja odbywa się automatycznie.
  2. dystrybucja danych: - m. p(ręcznie) s. M (Automatic)
  3. h/W wsparcie: - M. p(proste) s. M (rozbudowany, ponieważ musi być inteligentny, aby wykryć międzyproces automatycznie)
  4. poprawność: - M. p(trudne) s. M (mniej trudne)
  5. wykonanie: - M. p(trudne) s. M (bardzo trudne) "
 1
Author: Sarthak Dalabehera,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-15 01:35:37

Odpowiedzi już podane są pouczające, ale większość wspomina o idei, że pamięć dzielona jest szybsza niż przekazywanie wiadomości, co w rzeczywistości jest dość naiwnym stwierdzeniem. W każdym prawdziwym systemie robiącym coś użytecznego, dostęp do pamięci współdzielonej wymaga mechanizmów blokujących, aby kontrolować dostęp z oddzielnych wątków, co prawie zawsze kończy się wolniej niż implementacja tego samego systemu za pomocą przekazywania wiadomości.

 1
Author: John Vincent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-26 13:12:59

Pamięć Dzielona S / M wymagają, aby proces komunikacji współdzielił jakąś zmienną . Procesy, zgodnie z oczekiwaniami, do wymiany informacji poprzez wykorzystanie tych współdzielonych zmiennych . W schemacie pamięci współdzielonej odpowiedzialność za komunikację spoczywa na programistach aplikacji. System operacyjny zapewnia tylko nNeeds do udostępniania pamięci współdzielonej.

 0
Author: Shah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-23 06:22:23

Zrobiłem test na kursie w DTU obliczanie PI, i MPI (przekazywanie wiadomości) był ogólnie lepszy niż pthreads lub OpenMP (Share Memory) na naszym HPC.

 0
Author: Kim Sandberg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-14 11:29:04