• Artykuły
  • Forum
  • Ciekawostki
  • Encyklopedia
  • Pamięć dzielona

    Przeczytaj także...
    Wątek (ang. thread) – część programu wykonywana współbieżnie w obrębie jednego procesu; w jednym procesie może istnieć wiele wątków.Wieloprocesorowy system komputerowy jest systemem komputerowym, w którym do dyspozycji jest więcej niż jeden procesor.
    Integralność danych, także spójność (ang. data integrity) – funkcja bezpieczeństwa polegająca na tym, że dane nie zostały zmienione, dodane lub usunięte w nieautoryzowany sposób.

    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ą.

    Komunikacja międzyprocesowa (ang. Inter-Process Communication — IPC) – umowna nazwa zbioru sposobów komunikacji pomiędzy procesami systemu operacyjnego.BSD (ang. Berkeley Software Distribution, czasami nazywany Berkeley Unix) – odmiana systemu operacyjnego Unix wywodząca się ze stworzonych na Uniwersytecie Kalifornijskim Berkeley rozszerzeń dla systemu rozwijanego przez firmę AT&T. Także potoczna nazwa licencji BSD, na której te systemy są wydawane oraz pokrewnych licencji tego typu (np. licencja MIT).

    Sprzęt[]

    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.

    Interfejs programowania aplikacji (ang. Application Programming Interface, API) – sposób, rozumiany jako ściśle określony zestaw reguł i ich opisów, w jaki programy komunikują się między sobą. API definiuje się na poziomie kodu źródłowego dla takich składników oprogramowania jak np. aplikacje, biblioteki czy system operacyjny. Zadaniem API jest dostarczenie odpowiednich specyfikacji podprogramów, struktur danych, klas obiektów i wymaganych protokołów komunikacyjnych.Program komputerowy (ang. computer program) - sekwencja symboli opisująca obliczenia zgodnie z pewnymi regułami zwanymi językiem programowania. Program jest zazwyczaj wykonywany przez komputer (np. wyświetlenie strony internetowej), czasami bezpośrednio – jeśli wyrażony jest w języku zrozumiałym dla danej maszyny lub pośrednio – gdy jest interpretowany przez inny program (interpreter). Program może być ciągiem instrukcji opisujących modyfikacje stanu maszyny ale może również opisywać obliczenia w inny sposób (np. rachunek lambda).

    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:

  • połączenie procesor-pamięć staje się wąskim gardłem. Komputery z dzieloną pamięcią nie radzą sobie dobrze ze skalowaniem. Większość z nich ma dziesięć lub mniej procesorów.
  • spójność pamięci cache: kiedy jeden z cache'ów jest aktualizowany, zmiana taka musi być rozpropagowana na wszystkie procesory, aby zapewnić spójność danych. Istnieją odpowiednie protokoły zapewniania spójności, które w optymalnych warunkach zapewniają dobrą wydajność, lecz z drugiej strony przy dużej liczbie modyfikacji mogą ulec przeciążeniu.
  • Alternatywami dla pamięci dzielonej są pamięć rozproszona i rozproszona pamięć dzielona, z każdą z nich związane są podobne zagadnienia (zobacz także: Non-Uniform Memory Access).

    Unix Time-Sharing System (pisane również jako UNIX, choć nie jest to skrót – nazwa „UNIX” jest kalamburem określenia Multics, który był wzorem dla Uniksa) – system operacyjny rozwijany od 1969 r. w Bell Labs (UNIX System Laboratories, USL) przez Dennisa Ritchie i Kena Thompsona. W latach 70. i 80. zdobył bardzo dużą popularność, co zaowocowało powstaniem wielu odmian i implementacji. Część z nich, w szczególności Linux oraz OS X, jest w użyciu do dziś. UNIX jest zarejestrowanym znakiem towarowym The Open Group.COM (ang. Component Object Model) – standard definiowania i tworzenia interfejsów programistycznych na poziomie binarnym dla komponentów oprogramowania wprowadzony przez firmę Microsoft wraz z bibliotekami zapewniającymi podstawowe ramy i usługi dla współdziałania komponentów COM i aplikacji.

    Oprogramowanie[]

    W oprogramowaniu komputerowym pamięć dzielona oznacza jedno z dwóch pojęć:

  • metodę komunikacji międzyprocesowej, tj. sposób wymiany danych pomiędzy programami uruchomionymi jednocześnie. Jeden proces tworzy obszar w pamięci RAM, do którego pozostałe procesy mają dostęp.
  • metodę konserwacji przestrzeni pamięci poprzez kierowanie pamięci do pojedynczej instancji (zamiast kopii fragmentów danych), za pomocą mapowania pamięci wirtualnej lub bezpośredniego wsparcia danego programu. Jest to najczęściej wykorzystywane w bibliotekach współdzielonych oraz przez XIP.
  • 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.

    Mapowanie – w informatyce przyporządkowanie jednych zasobów systemowych do drugich, często wirtualnych – zmiana przestrzeni adresowej (m.in. mapowanie plików, partycji, pamięci operacyjnej, portów I/O komputera, adresów IP, zasobów sieciowych).Biblioteka dynamiczna – rodzaj biblioteki, która łączona jest z programem wykonywalnym dopiero w momencie jego wykonania. Aby tego dokonać, system operacyjny komputera musi posiadać pewne funkcje, które umożliwiają łączenie dynamiczne.

    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.

    Procesor (ang. processor), także CPU (ang. Central Processing Unit) – urządzenie cyfrowe sekwencyjne, które pobiera dane z pamięci, interpretuje je i wykonuje jako rozkazy. Wykonuje on ciąg prostych operacji (rozkazów) wybranych ze zbioru operacji podstawowych określonych zazwyczaj przez producenta procesora jako lista rozkazów procesora.Proces – jedno z podstawowych pojęć w informatyce, definiowane jako egzemplarz wykonywanego programu. Każdy nowo powstały proces otrzymuje unikatowy numer, który go jednoznacznie identyfikuje, tzw. PID (od (ang.) process identifier).

    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 ustandaryzowane API 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.

    Sieć komputerowa (w skrócie: sieć) – zbiór komputerów i innych urządzeń połączonych ze sobą kanałami komunikacyjnymi. Sieć komputerowa umożliwia wzajemne przekazywanie informacji oraz udostępnianie zasobów własnych między podłączonymi do niej urządzeniami, tzw. "punktami sieci".CORBA (ang. Common Object Request Broker Architecture) – technologia zapewniająca komunikację pomiędzy obiektami pracującymi w heterogenicznych (różnorodnych) systemach komputerowych. Obiekty pełniące dowolne funkcje mogą być zaimplementowane w różnych językach programowania, na dowolnej platformie sprzętowej, pod kontrolą różnych systemów operacyjnych.

    Niektóre buildy linuksowego jądra 2.6 zaczęły oferować folder /dev/shm jako pamięć dzieloną w postaci ramdysku.

    Zobacz też[]

  • biblioteka dynamiczna



  • w oparciu o Wikipedię (licencja GFDL, CC-BY-SA 3.0, autorzy, historia, edycja)

    Warto wiedzieć że... beta

    Potok (ang. pipe) – jeden z mechanizmów komunikacji międzyprocesowej umożliwiający wymianę danych pomiędzy dwoma procesami. Odbywa się to najczęściej poprzez połączenie standardowego wyjścia jednego procesu ze standardowym wejściem drugiego.
    Pamięć podręczna (ang. cache) – mechanizm, w którym część spośród danych zgromadzonych w źródłach o długim czasie dostępu i niższej przepustowości jest dodatkowo przechowywana w pamięci o lepszych parametrach. Ma to na celu poprawę szybkości dostępu do tych informacji, które przypuszczalnie będą potrzebne w najbliższej przyszłości.
    Biblioteka współdzielona (ang. shared library, shared object) - jednolita, kompletna biblioteka ładowana w całości do pamięci podczas uruchamiania programu. Raz załadowana może być wykorzystywana przez wiele programów (jak wskazuje nazwa, jest współdzielona pomiędzy programami) bez potrzeby ponownego jej ładowania.
    Ramdysk – obszar komputerowej pamięci RAM, który jest wykorzystywany w roli pamięci dyskowej. Dzięki temu dalece polepszają się czasy dostępu, ponieważ ramdyski są mniej więcej tysiąc razy szybsze od napędów dysków twardych (HDD). Jednakże dane przechowywane w ramdyskach w przypadku odłączenia lub awarii zasilania są bezpowrotnie tracone, ponieważ umieszczone są w zwyczajnej, ulotnej pamięci RAM. W wyniku tego wyłączenie komputera oznacza utratę danych z ramdysku. Jednak są one doskonałym miejscem do przechowywania tymczasowych danych lub zdekompresowanych programów w krótkim czasie.
    X Window System – graficzny system komputerowy (system okien) stworzony w latach 80. w laboratoriach Massachusetts Institute of Technology (MIT), obecnie prace nadzoruje X.Org Foundation. Najnowszym wydaniem jest wersja 11, wydanie 7.6.
    RAM (ang. Random Access Memory – pamięć o dostępie swobodnym) – podstawowy rodzaj pamięci cyfrowej. Choć nazwa sugeruje, że oznacza to każdą pamięć o bezpośrednim dostępie do dowolnej komórki pamięci (w przeciwieństwie do pamięci o dostępie sekwencyjnym, np. rejestrów przesuwnych), ze względów historycznych określa ona tylko te rodzaje pamięci o bezpośrednim dostępie, w których możliwy jest wielokrotny i łatwy zapis, a wyklucza pamięci ROM (tylko do odczytu) i EEPROM których zapis trwa znacznie dłużej niż odczyt, pomimo iż w ich przypadku również występuje swobodny dostęp do zawartości.
    Definicja intuicyjna: Pamięć wirtualna to, z punktu widzenia programisty, znacznie większa ilość pamięci RAM dla procesu niż fizycznie dostępna w systemie, niezależnej od innych procesów. Ułatwia to tworzenie aplikacji, a także sztuczne zwiększenie ilości dostępnej pamięci poprzez wykorzystanie części dysku twardego do tego celu.

    Reklama

    Czas generowania strony: 0.02 sek.