Sdílená paměť
Sdílená paměť (anglicky shared memory) je v informatice část operační paměti (tj. RAM), která slouží pro více subjektů (procesy, procesory apod.). Sdílená paměť mezi procesy slouží k zajištění vzájemné komunikace (viz meziprocesová komunikace) nebo pro úsporu obsazené paměti (viz sdílené knihovny, deduplikace paměti při virtualizaci). O sdílené paměti lze hovořit i z hlediska hardware, kdy společnou operační paměť sdílí více procesorů (viz SMP).
Meziprocesová komunikace
Sdílenou paměť lze použít ke komunikaci mezi procesy (meziprocesová komunikace, anglicky Inter-process communication). Příkladem může být výměna dat mezi programy běžícími současně. Jeden z procesů si vytvoří prostor v RAM paměti, do kterého může druhý proces vstupovat.
Jelikož mohou oba procesy vstupovat do oblasti sdílené paměti jako do běžné paměti, jedná se o velice rychlý způsob komunikace (opak k ostatním mechanismům komunikace mezi procesy, jako jsou např. pojmenované roury, Unix socket nebo CORBA). Nutno ovšem dodat, že tento způsob je méně výkonný, což je dáno právě tím že komunikace probíhá právě na jednom počítači, kdežto u ostatních IPC metodách může být ke komunikaci využita počítačová síť.
IPC prostřednictvím sdílené paměti se využívá především v Unixových systémech. POSIX poskytuje standardizované rozhraní pro programování aplikací (API - Application Programming Interface) pro využití sdílené paměti (POSIX Shared Memory).
Paměť sdílená více procesory
Pokud mluvíme o hardwaru, rozumíme pod pojmem sdílená paměť velkou část paměti (RAM - Random Access Memory), do které lze přistupovat z několika procesorů (CPU - Central Processing Unit) víceprocesorového počítačového systému.
Vytvořit systém se sdílenou pamětí je poměrně lehké pokud zajistíme, aby všechny procesory sdílely jednotný pohled na data a komunikace mezi procesory může být tak rychlá jak paměť dovolí.
Nevýhodou systémů se sdílenou pamětí je to, že mnoho procesorů potřebuje rychlý přístup k paměti a tak se raději odkážou na Cache paměť, což má za následek tyto dvě komplikace:
- Degradace přístupového času: Více procesorů se může pokusit o přístup ke stejné části paměti, což má za následek zpomalení, spojení mezi procesorem a pamětí se stane těžko průchodné. Počítače se sdílenou pamětí nejsou příliš vyvážené. Většina z nich má pouze deset procesorů.
- spojitost Cache: Kdykoliv je jedna Cache paměť naplněna novými informacemi, mělo by být informovány ostatní procesory, jinak budou pracovat s nespojitými daty. Právě protokoly spojitosti mohou, pokud pracují dobře, poskytovat velmi vysoký výkonnost při přístupu několika procesorů ke sdíleným informacím. Na druhou stranu mohou být tyto protokoly někdy přetíženy a zpomalovat tak výkon.
Alternativou pro sdílenou paměť je rozdělení paměti a rozdělení sdílené paměti, ale i toto řešení může způsobit podobné problémy jako použití sdílené paměti.
Literatura
- KOLÁŘ, Petr. Operační systémy [online]. Liberec: 2005-02-01 [cit. 2008-08-30]. S. 26—33. Dostupné v archivu pořízeném dne 2014-07-14.
Externí odkazy
- https://web.archive.org/web/20110608142010/http://beej.us/guide/bgipc/output/html/multipage/shm.html – Beej's Guide to Unix IPC (anglicky, ukázky kódu v jazyce C)