Sdílená paměť
Author
Albert FloresSdílená paměť je výraz, který se používá pro označení procesu či úkolu, který je prováděn systémem nebo softwarem, ve kterém jsou data sdílena mezi různými procesy nebo úlohami. Sdílená paměť slouží k výměně informací a komunikaci mezi jednotlivými částmi systému. Používá se například v multitaskingových operačních systémech nebo při programování vícevláknových aplikací. Sdílená paměť může být implementována pomocí různých mechanismů, jako jsou sdílené proměnné, sdílené soubory nebo sdílené paměťové mapy. Při použití sdílené paměti je nutné zajistit synchronizaci a ochranu dat před přístupem více procesů nebo úloh současně. Samotné sdílení paměti může také přinášet různé výhody, jako je efektivnější využití paměti, rychlejší přístup k datům nebo jednodušší komunikace mezi procesy.
Sdílená paměť 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). Příkladem může být výměna dat mezi programy běžícími současně. +more 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). +more 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é. +more 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
Externí odkazy
https://web. archive. +moreorg/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).
Kategorie:Meziprocesová komunikace Kategorie:Počítačová paměť Kategorie:Programování