Loading AI tools
Z Wikipedii, wolnej encyklopedii
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.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.