Поделена Меморија
-----------------

Поделената меморија е меморија која што може истовремено да биде пристапена од страна на повеќе програми, со цел да обезбеди комуникација меѓу нив или да ги избегне непотребни копии. Во зависност од контекстот, програмите можат да работат на еден процесор или на повеќе одвоени обработувачи. Користењето меморија внатре во секој програм, како на пример помеѓу своите делови, генерално не се смета како поделена меморија.

Во Хардвер
----------

Во хардверот на компјутерот, поделена меморија се однесува на обичен голем блок на меморија со случаен пристап која може да се пристапува од неколку различни централно процеситачки единици, во повеќе-обработувачкки компјутерски системи.
Поделен мемориски систем е релативно лесно да се испрогрмира сè додека секој од обработувачите делат иста список на податоци и комуникацијата помеѓу обработувачите може да биде брза исто како меморискиот пристап на иста локација.

Прашањето за поделените мемориски системи е тоа што повеќето обработувачи имаат потреба од брз пристап до мемроијата и затоа постои ќеш меморијата, која има две компликации:

• Процесор-Меморија врската станува тесно грло. Компјутерите со Поделена меморија не можат да подредуваат многу добро. Повеќето од нив имаат десет или неколку обработувачи.
• Кеш кохерентност: Кога и еден ќеш да биде надграден со информација што ќе се користи од друг процесор, промената мора да се пренесе и на останатите обработувачи, инаку обработувачите ќе работат со некохерентни податоци. Таквите кохерентни протоколи можат, кога работат добро, да обезбедат екстремно високи перформанси на пристап, за делење информации помеѓу обработувачите. Од друга страна, некогаш и тие се преоптоваруваат и стануваат тесно грло на перформансите.
Алтернативите на поделена меморија се дистрибуирана меморија и дистрибуирана поделена меморија, секоја од нив има сличен сет на проблеми.

Во Софтверот
------------

• Начин на интер-процесес комуникација (IPC), односно начинот на размена на податоци помеѓу програми кои работат во исто време. Едни процеси ќе создаваат место во RAM –от до кое другите можат да пристапат, или
• Начин на конзервирање на мемориски простор со директен пристап во кој обично ќе се наоѓаат копии на дел од податоците на еден пример, со помош на виртуелно мемориско мапирање или со експлицитна поддршка на програмата за која што станува збор. Ова најчесто се користи за поделени библиотеки и за XIP.

Откако два процеси можат да пристапат до поделена меморија како до регулатна работна меморија, ова е многу брз начин на комуникација. Од друга страна, е помалку моќно, како на пример, процесите кои комуницираат мораат да работат на иста машина, и мора да се преземе нешто за да се избегне проблемот на процесите кои работат на различни CPU и основната архитектура не им е ќеш кохерентна

IPC од поделената меморија се користи на пример за пренос на слики помеѓу апликацијата и X опслужувач на Unix систем, или внатре во IStream вратен од CoMarshallnterThreadInterfaceLnStream во COM библиотеките на Windows.

POSIX нуди стандардизирана APL за користење на поделена меморија, POSIX Поделена Меморија. Оваа функција ја користи shm\_open од sys / nman.h.
Unix 5 системот обезбедува APL за поделена меморија исто така. Оваа користи shmget од sys/shm.h.

BSD ситемите овозможуваат "анонимна мапирана меморија" која може да се користи од неколку процеси.

Последните 2.6 Linux јадра почнаа да нудат /dev/shm како поделена меморија во форма на RAM диск, поточно како светски запишуван директориум кој е зачуван во мемроија. /dev/shm поддршката е незадолжителна во јадрената конфигурациска податотека. Вклучен е задолжително во Fedora и Ubuntu дистрибуциите.

Надворешни врски
----------------

* Shared Memory library
* shared memory facility
* shm\_open
* function in PHP-APL

|  |  |  |
| --- | --- | --- |
| 

|  |  |
| --- | --- |
| Нормативна контрола | 
* GND: 4294156-8

 |

 |