W tym artykule dokładnie omówimy Pamięć dzielona, temat, który przykuł uwagę ludzi z całego świata. Pamięć dzielona jest od lat przedmiotem zainteresowania i badań, a jego wpływ widać w wielu dziedzinach, od nauki i technologii po kulturę i sztukę. Gdy zanurzymy się w świecie Pamięć dzielona, napotkamy nowe pomysły, ekscytujące odkrycia i fascynujące perspektywy, które z pewnością pozwolą nam głębiej zrozumieć i docenić ten temat. Dołącz do nas w tej fascynującej eksploracji Pamięć dzielona i odkryjmy razem wszystko, co ma nam do zaoferowania.
Pamięć dzielona – rodzaj pamięci, z której może jednocześnie korzystać wiele programów. Służy do umożliwienia komunikacji pomiędzy nimi lub uniknięcia redundantnych kopii. W zależności od kontekstu, programy mogą być uruchamiane na pojedynczym lub wielu osobnych procesorach. Pamięć wykorzystywana do komunikacji w obrębie pojedynczego programu, na przykład pomiędzy jego wieloma wątkami, zwykle nie jest nazywana pamięcią dzieloną.
W warstwie sprzętowej pamięć dzielona odnosi się (zwykle) do dużego bloku RAM, do którego dostęp może uzyskać wiele procesorów wieloprocesorowego systemu komputerowego. System taki jest stosunkowo łatwo programowalny ponieważ wszystkie procesory dzielą wspólny widok danych, a komunikacja pomiędzy procesorami może być tak szybka, jak dostęp do pamięci w tej samej lokalizacji.
Zagadnienie systemów z pamięcią dzieloną polega na tym, że wiele procesorów potrzebuje szybkiego dostępu do pamięci i będą prawdopodobnie buforować pamięć, z czym wiążą się dwie komplikacje:
Alternatywami dla pamięci dzielonej są pamięć rozproszona i rozproszona pamięć dzielona, z każdą z nich związane są podobne zagadnienia (zobacz też: niejednolity dostęp do pamięci).
W oprogramowaniu komputerowym pamięć dzielona oznacza jedno z dwóch pojęć:
Jako że oba procesy uzyskują dostęp do obszaru dzielonej pamięci podobnie jak do normalnej pamięci roboczej, jest to bardzo szybki sposób komunikacji (w przeciwieństwie do innych mechanizmów komunikacji międzyprocesowej takich jak łącza nazwane, gniazdo dziedziny Uniksa czy CORBA). Z drugiej strony nie jest równie mocny, ponieważ biorące w komunikacji procesy muszą być uruchomione na tym samym sprzęcie (podczas gdy inne metody mogą korzystać z sieci komputerowych). Należy także zadbać o odpowiednią synchronizację dostępu.
Komunikacja międzyprocesowa jest używana przez dzieloną pamięć między innymi do transferowania obrazków pomiędzy aplikacją i serwerem X Window System w systemach uniksowych lub w obrębie obiektu IStream
zwracanego przez CoMarshalInterThreadInterfaceInStream
w bibliotekach COM w systemie Windows.
Biblioteki dynamiczne są zwykle przechowywane w pamięci i mapowane na wiele procesów. Duplikowane są jedynie strony specyficzne dla konkretnego procesu, zwykle poprzez mechanizm leniwego kopiowania (kopia tworzona jest przy pierwszej próbie modyfikacji).
POSIX dostarcza ustandaryzowany interfejs programowania aplikacji dla pamięci dzielonej, które wykorzystuje funkcję shmget()
z sys/shm.h
.
Systemy BSD dostarczają "anonimową pamięć mapowaną", która może być wykorzystana przez wiele procesów.
Niektóre buildy linuksowego jądra 2.6 zaczęły oferować folder /dev/shm
jako pamięć dzieloną w postaci ramdysku.