Дељена меморијаДељена меморија (енгл. Shared Memory) у рачунарским системима је РАМ меморија (енгл. RAM) којој може да се истовремено приступи од стране више програма са намером да се оствари комуникација између тих програма или да се избегне непотребно копирање идентичних података. ![]() У архитектури рачунара, дељена меморија углавном означава РАМ меморију којој може да приступи више централних процесорских јединица (енгл. CPU) у вишепроцесорским рачунарским системима (en:Multiprocessing). Пошто у вишепроцесорским рачунарским системима дељена меморија врло лако може да постане уско грло, већина система има и низ кеш меморија између процесора и дељене меморије. Да би се осигурао конзистентан приступ подацима у дељеној меморији, кеш меморија и процесори се придржавају неког протокола за кохерентан приступ дељеној меморији. Системи са дељеном меморијом су релативно једноставни за програмирање зато што сви процесори имају приступ истој меморији (самим тим и истим структурама података у тој меморији) и комуникација између процесора може бити брза колико и приступ тој заједничкој дељеној меморији. У хардверуУ хардверу рачунара, дељена меморија се односи на (обично велике) блокове меморије са случајним приступом (RAM) којој може приступити неколико различитих процесора (CPU) у вишепроцесорским рачунарским системима. Системеи са дељеном меморијом су релативно лаки за програмирање, јер сви процесори деле један приказ података и комуникација између процесора може бити тако брза као меморијски приступ истој локацији. Проблем са системима са дељеном меморијом је тај да многи процесори захтевају брз приступ меморији и вероватно кеш меморији, који има две компликације:
Технологије попут енгл. crossbar switch, Omega network, HyperTransport или Front-side bus могу да се користе да ублаже ефекте уског грла. Алтернатива дељеној меморији је расподељена меморија и расподељена општа меморија, свака има сличан скуп проеблематике. Такође погледати NUMA. У софтверуСофтверу рачунара, дељена меморија је или
Пошто оба процеса могу да приступе дељеном меморијском простору као редовна радна меморија, ово је веома брз начин комуникације (за разлику од других механизама IPC-а попут (енгл. named pipe, Unix domain socket или CORBA). С друге стране, мање је моћна, као на пример, процеси комуникације морају да раде на истој машини (од других IPC метода само сокети интернет домена (не сокети UNIXа) могу да користе утичнице користе рачунарске мреже), и мора се водити рачуна да се избегну проблеми ако процеси дељене меморије раде на одвојеним процесорима и у основи архихектуре није повезан кеш. IPC, од стране дењене меморије, се користи, на пример, за пренос слике између апликације и Икс сервера на Јуникс системима, или унутар енгл. IStream враћених објеката од стране енгл. CoMarshalInterThreadInterfaceInStream у COM библиотекама под Windows оперативним системом. Динамичке библиотеке се обично једном одржавају у меморији и маприрају у више процеса, и само странице које је требало прилагодити за појединачни процес (јер је тамо симбол другачије решен) су дуплиране, обично са механизмом познатим као енгл. copy-on-write који на транспарентан начин копира страницу када је у питању покушај писања, а затим омогућава успешно писање на приватној копији. Подршка на Јуникс (UNIX) платформамаПосикс обезбеђује стандардизован API за коришћење дељене меморије, Посикс Дељена Меморија. Ово користи функцију Дељена меморија креирана помоћу Недавне Линуксове дистрибуције засноване на кернелу 2.6, су почеле да нуде /dev/shm као дељену меморију у облику RAM диска, конкретно као world-writable директоријум (директоријум у коме сваки корисник система може да креира датотеке) који се чува у меморији. И енгл. RedHat и Debijan су засновани на дистрибуцијама и укључују их као подразумеване. Подршка за овај тип RAM диска је потпуно опциона унутар кернелове датотеке за конфигурацију.[5] Подршка на другим платформамаНа Windows-у, функција Неке C++ библиотеке пружају преносиви и објектно-оријентисани приступ функционалности дељене меморије. На пример, енгл. Boost садржи Boost. Интерпроцесорску C++ Библиотеку.[8] Qt обезбеђује QSharedMemory class.[9] Постоји уграђена подршка за дељену меморију, исто у програмским језицима, поред језика C/C++. На пример, PHP обезбеђује API да би креирао дељену меморију, слично Посикс функцијама.[10] Види јошРеференце
Литература
Спољашње везе
|
Portal di Ensiklopedia Dunia