Ця стаття не містить . (травень 2016) |
Спільна пам'ять (англ. Shared memory) — регіон комп'ютерної пам'яті, до якої мають доступ кілька програм водночас. Такий доступ може організовуватись з метою зв'язку або передачі даних між програмами (чи їх потоками виконання), коли зайве копіювання даних небажане. Залежно від контексту, програми можуть запускатись як на одному процесорі, так і на кількох.
У апаратному забезпеченні
Цей розділ потребує доповнення. |
Стосовно апаратної реалізації комп'ютера, термін спільна пам'ять означає блок оперативної пам'яті, до якого мають доступ кілька центральних процесорів (ЦП) у багатопроцесорних комп'ютерних системах.
Існує кілька різновидів архітектури систем зі спільною пам'яттю:
- однорідний доступ до пам'яті (англ. uniform memory access): рівномірний доступ до пам'яті всіма процесорами;
- неоднорідний доступ до пам'яті (англ. non-uniform memory access): час доступу до пам'яті залежить від розташування пам'яті стосовно процесора;
- архітектура пам'яті із використанням лише кешу (англ. cache-only memory architecture): локальні блоки пам'яті для процесорів у кожному вузлі використовуються як кеш-пам’ять, а не як основна.
Системи із розподіленою пам'яттю відносно прості для програм? оскільки усі процеси розподіляють єдине представлення даних і комунікація між процесорами може бути такою ж швидкою як доступ до пам'яті в одному місці. Проблема із системами із розподіленою пам'яттю полягає у тому, що багато центральних процесорів потребують швидкого доступу до пам'яті та швидше за все, доступу до кешу процесора, тому з'являються такі ускладнення:
- збільшення часу доступу: коли кілька процесорів намагаються отримати доступ до одного блоку пам'яті, це викликає незгоду. Системи із розподіленою пам'яттю не можуть добре масштабуватись. Більшість із них мають 10, або менше процесорів;
- відсутність узгодженості даних: всякий час, коли один кеш оновлюється інформацією, котра може бути використана іншими процесорами, зміна повинна відбутись в інших процесорах інакше, різні процесори будуть працювати із різними даними. Така когерентність кешу, коли вона добре працює, може забезпечити надзвичайно високопродуктивний доступ до розподіленої між багатьма процесорами інформації. З іншої сторони, інколи вони можуть бути перевантажені й стати надто вузьким місцем для продуктивності.
У випадку з (архітектура процесорів, у якій різні типи процесорів, такі як (GPU), або (CPU) поєднуються за допомогою розподіленої пам'яті), CPU-модуль керування пам'яттю (MMU) та GPU-(блок управління пам'яттю для вводу/виводу) (IOMMU) повинні ділити певні характеристики, як загальний адресний простір.
Альтернативами до розподіленої пам'яті є distributed memory і distributed shared memory, які мають той же список проблем.
У програмному забезпеченні
У програмному забезпеченні, розподілена пам'ять являє собою:
- метод взаємодії між процесами, тобто шлях обміну даними між програмами які працюють одночасно. Один процес створює область у RAM-пам'яті до якої мають доступ інші процеси;
- метод збереження простору пам'яті завдяки направленню доступу до того, що є копіями даних замість одиничних екземплярів, використовуючи планування віртуальної пам'яті. Найчастіше це використовується для розподілених бібліотек та для execute in place-систем.
Оскільки обидва процеси можуть отримати доступ до області розподіленої пам'яті, як для звичайної робочої пам'яті, це являє собою дуже швидкий шлях до комунікації. З іншої сторони, це менш масштабовано, для прикладу, взаємодійні процеси повинні бути запущені на одній машині, і необхідно бути обережним, щоби уникнути проблем, у випадку, якщо процеси, що використовують розподілену пам'ять, виконуються на окремих процесорах й архітектура не є кеш-когерентною.
У операційних системах
З боку багатьох сучасних операційних систем надаються потужні інструменти та API для організації міжпроцесової взаємодії (й, навіть, міжпроцесорної), у тому числі семафори і м'ютекси.
Підтримка
Підтримка на UNIX-системах
POSIX забезпечує стандартизоване API для використання розподіленої пам'яті, POSIX Shared Memory. Воно використовує функцію shm_open
із sys/mman.h. міжпроцесорна комунікація POSIX (частина POSIX:XSI розширення) функції для роботи із розподіленою пам'яттю : shmat
, shmctl
, shmdt
and shmget
.
Unix System V чудово забезпечує API для розподіленої пам'яті. Воно використовує shmget з sys/shm.h. BSD-системи забезпечують "anonymous mapped memory" яка може бути використана кількома процесорами.
Розподілена пам'ять, створена за допомогою shm_open
є стійкою. Вона залишається у процесі, поки не буде явно видалена за допомогою процесу. У цьому є недолік, який полягає у тому, що якщо процес вийде з ладу і не вдається очистити загальну пам'ять він буде залишатись активним до завершення роботи системи.
POSIX також забезпечує mmap
API для зображення файлів у пам'ять; зображення може бути розподіленим, дозволяючи вміст пам'яті, в ролі розподіленої.
Дистрибутиви Linux які базуються на 2.6 та новіших версіях kernel пропонують /dev/shm як розподілену пам'ять у формі RAM-диску, конкретніше, як каталог, доступний для запису (директорія, у якій кожен користувач системи може створювати файли) що зберігається у пам'яті. Дистрибутиви, які базуються на RedHat та Debian включають це за умовчанням. Підтримка цього типу RAM-пам'яті не є обов'язковим у файлі конфігурації kernel.
Підтримка у Windows
У Windows функція CreateSharedMemory
може бути використана для створення розподіленої пам'яті. Також може бути використана CreateFileMapping
і MapViewOfFile
функції для розміщення області файлу у пам'яті в кількох процесах.
Підтримка у кросплатформних системах
Деякі бібліотеки забезпечують портативний та об'єктноорієнтований доступ до функціонала розподіленої пам'яті. Для прикладу, Boost вміщує в собі Boost.Interprocess C++ бібліотеку. Qt забезпечує клас QSharedMemory.
Підтримка мов програмування
У мовах окрім C/ також забезпечена нативна підтримка розподіленої пам'яті. Для прикладу, PHP забезпечує API для створення розподіленої пам'яті, схоже на функції із POSIX.
- Тема 11. Багатопроцесорні системи. — Вікі ЦДПУ. wiki.cuspu.edu.ua. Процитовано 30 квітня 2022.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno traven 2016 Spilna pam yat angl Shared memory region komp yuternoyi pam yati do yakoyi mayut dostup kilka program vodnochas Takij dostup mozhe organizovuvatis z metoyu zv yazku abo peredachi danih mizh programami chi yih potokami vikonannya koli zajve kopiyuvannya danih nebazhane Zalezhno vid kontekstu programi mozhut zapuskatis yak na odnomu procesori tak i na kilkoh Model sistemi rozpodilenoyi pam yati troh procesoriv U aparatnomu zabezpechenniCej rozdil potrebuye dopovnennya Stosovno aparatnoyi realizaciyi komp yutera termin spilna pam yat oznachaye blok operativnoyi pam yati do yakogo mayut dostup kilka centralnih procesoriv CP u bagatoprocesornih komp yuternih sistemah Isnuye kilka riznovidiv arhitekturi sistem zi spilnoyu pam yattyu odnoridnij dostup do pam yati angl uniform memory access rivnomirnij dostup do pam yati vsima procesorami neodnoridnij dostup do pam yati angl non uniform memory access chas dostupu do pam yati zalezhit vid roztashuvannya pam yati stosovno procesora arhitektura pam yati iz vikoristannyam lishe keshu angl cache only memory architecture lokalni bloki pam yati dlya procesoriv u kozhnomu vuzli vikoristovuyutsya yak kesh pam yat a ne yak osnovna Sistemi iz rozpodilenoyu pam yattyu vidnosno prosti dlya program oskilki usi procesi rozpodilyayut yedine predstavlennya danih i komunikaciya mizh procesorami mozhe buti takoyu zh shvidkoyu yak dostup do pam yati v odnomu misci Problema iz sistemami iz rozpodilenoyu pam yattyu polyagaye u tomu sho bagato centralnih procesoriv potrebuyut shvidkogo dostupu do pam yati ta shvidshe za vse dostupu do keshu procesora tomu z yavlyayutsya taki uskladnennya zbilshennya chasu dostupu koli kilka procesoriv namagayutsya otrimati dostup do odnogo bloku pam yati ce viklikaye nezgodu Sistemi iz rozpodilenoyu pam yattyu ne mozhut dobre masshtabuvatis Bilshist iz nih mayut 10 abo menshe procesoriv vidsutnist uzgodzhenosti danih vsyakij chas koli odin kesh onovlyuyetsya informaciyeyu kotra mozhe buti vikoristana inshimi procesorami zmina povinna vidbutis v inshih procesorah inakshe rizni procesori budut pracyuvati iz riznimi danimi Taka kogerentnist keshu koli vona dobre pracyuye mozhe zabezpechiti nadzvichajno visokoproduktivnij dostup do rozpodilenoyi mizh bagatma procesorami informaciyi Z inshoyi storoni inkoli voni mozhut buti perevantazheni j stati nadto vuzkim miscem dlya produktivnosti U vipadku z arhitektura procesoriv u yakij rizni tipi procesoriv taki yak GPU abo CPU poyednuyutsya za dopomogoyu rozpodilenoyi pam yati CPU modul keruvannya pam yattyu MMU ta GPU blok upravlinnya pam yattyu dlya vvodu vivodu IOMMU povinni diliti pevni harakteristiki yak zagalnij adresnij prostir Alternativami do rozpodilenoyi pam yati ye distributed memory i distributed shared memory yaki mayut toj zhe spisok problem U programnomu zabezpechenniU programnomu zabezpechenni rozpodilena pam yat yavlyaye soboyu metod vzayemodiyi mizh procesami tobto shlyah obminu danimi mizh programami yaki pracyuyut odnochasno Odin proces stvoryuye oblast u RAM pam yati do yakoyi mayut dostup inshi procesi metod zberezhennya prostoru pam yati zavdyaki napravlennyu dostupu do togo sho ye kopiyami danih zamist odinichnih ekzemplyariv vikoristovuyuchi planuvannya virtualnoyi pam yati Najchastishe ce vikoristovuyetsya dlya rozpodilenih bibliotek ta dlya execute in place sistem Oskilki obidva procesi mozhut otrimati dostup do oblasti rozpodilenoyi pam yati yak dlya zvichajnoyi robochoyi pam yati ce yavlyaye soboyu duzhe shvidkij shlyah do komunikaciyi Z inshoyi storoni ce mensh masshtabovano dlya prikladu vzayemodijni procesi povinni buti zapusheni na odnij mashini i neobhidno buti oberezhnim shobi uniknuti problem u vipadku yaksho procesi sho vikoristovuyut rozpodilenu pam yat vikonuyutsya na okremih procesorah j arhitektura ne ye kesh kogerentnoyu U operacijnih sistemah Z boku bagatoh suchasnih operacijnih sistem nadayutsya potuzhni instrumenti ta API dlya organizaciyi mizhprocesovoyi vzayemodiyi j navit mizhprocesornoyi u tomu chisli semafori i m yuteksi PidtrimkaPidtrimka na UNIX sistemah POSIX zabezpechuye standartizovane API dlya vikoristannya rozpodilenoyi pam yati POSIX Shared Memory Vono vikoristovuye funkciyu shm open iz sys mman h mizhprocesorna komunikaciya POSIX chastina POSIX XSI rozshirennya funkciyi dlya roboti iz rozpodilenoyu pam yattyu shmat shmctl shmdt and shmget Unix System V chudovo zabezpechuye API dlya rozpodilenoyi pam yati Vono vikoristovuye shmget z sys shm h BSD sistemi zabezpechuyut anonymous mapped memory yaka mozhe buti vikoristana kilkoma procesorami Rozpodilena pam yat stvorena za dopomogoyu shm open ye stijkoyu Vona zalishayetsya u procesi poki ne bude yavno vidalena za dopomogoyu procesu U comu ye nedolik yakij polyagaye u tomu sho yaksho proces vijde z ladu i ne vdayetsya ochistiti zagalnu pam yat vin bude zalishatis aktivnim do zavershennya roboti sistemi POSIX takozh zabezpechuye mmap API dlya zobrazhennya fajliv u pam yat zobrazhennya mozhe buti rozpodilenim dozvolyayuchi vmist pam yati v roli rozpodilenoyi Distributivi Linux yaki bazuyutsya na 2 6 ta novishih versiyah kernel proponuyut dev shm yak rozpodilenu pam yat u formi RAM disku konkretnishe yak katalog dostupnij dlya zapisu direktoriya u yakij kozhen koristuvach sistemi mozhe stvoryuvati fajli sho zberigayetsya u pam yati Distributivi yaki bazuyutsya na RedHat ta Debian vklyuchayut ce za umovchannyam Pidtrimka cogo tipu RAM pam yati ne ye obov yazkovim u fajli konfiguraciyi kernel Pidtrimka u Windows U Windows funkciya CreateSharedMemory mozhe buti vikoristana dlya stvorennya rozpodilenoyi pam yati Takozh mozhe buti vikoristana CreateFileMapping i MapViewOfFile funkciyi dlya rozmishennya oblasti fajlu u pam yati v kilkoh procesah Pidtrimka u krosplatformnih sistemah Deyaki C biblioteki zabezpechuyut portativnij ta ob yektnooriyentovanij dostup do funkcionala rozpodilenoyi pam yati Dlya prikladu Boost vmishuye v sobi Boost Interprocess C biblioteku Qt zabezpechuye klas QSharedMemory Pidtrimka mov programuvannya U movah okrim C C takozh zabezpechena nativna pidtrimka rozpodilenoyi pam yati Dlya prikladu PHP zabezpechuye API dlya stvorennya rozpodilenoyi pam yati shozhe na funkciyi iz POSIX Tema 11 Bagatoprocesorni sistemi Viki CDPU wiki cuspu edu ua Procitovano 30 kvitnya 2022