Спільна пам'ять
![]() Спільна пам'ять (англ. Shared memory) — регіон комп'ютерної пам'яті, до якої мають доступ кілька програм водночас. Такий доступ може організовуватись з метою зв'язку або передачі даних між програмами (чи їх потоками виконання), коли зайве копіювання даних небажане. Залежно від контексту, програми можуть запускатись як на одному процесорі, так і на кількох. У апаратному забезпеченні
Стосовно апаратної реалізації комп'ютера, термін спільна пам'ять означає блок оперативної пам'яті, до якого мають доступ кілька центральних процесорів (ЦП) у багатопроцесорних комп'ютерних системах. Існує кілька різновидів архітектури систем зі спільною пам'яттю:
Системи із розподіленою пам'яттю відносно прості для програм? оскільки усі процеси розподіляють єдине представлення даних і комунікація між процесорами може бути такою ж швидкою як доступ до пам'яті в одному місці. Проблема із системами із розподіленою пам'яттю полягає у тому, що багато центральних процесорів потребують швидкого доступу до пам'яті та швидше за все, доступу до кешу процесора, тому з'являються такі ускладнення:
У випадку з гетерогенною архітектурою системи (архітектура процесорів, у якій різні типи процесорів, такі як (GPU), або (CPU) поєднуються за допомогою розподіленої пам'яті), CPU-модуль керування пам'яттю (MMU) та GPU-блок управління пам'яттю для вводу/виводу (IOMMU) повинні ділити певні характеристики, як загальний адресний простір. Альтернативами до розподіленої пам'яті є distributed memory і distributed shared memory, які мають той же список проблем. У програмному забезпеченніУ програмному забезпеченні, розподілена пам'ять являє собою:
Оскільки обидва процеси можуть отримати доступ до області розподіленої пам'яті, як для звичайної робочої пам'яті, це являє собою дуже швидкий шлях до комунікації. З іншої сторони, це менш масштабовано, для прикладу, взаємодійні процеси повинні бути запущені на одній машині, і необхідно бути обережним, щоби уникнути проблем, у випадку, якщо процеси, що використовують розподілену пам'ять, виконуються на окремих процесорах й архітектура не є кеш-когерентною. У операційних системахЗ боку багатьох сучасних операційних систем надаються потужні інструменти та API для організації міжпроцесової взаємодії (й, навіть, міжпроцесорної[1]), у тому числі семафори і м'ютекси. ПідтримкаПідтримка на UNIX-системахPOSIX забезпечує стандартизоване API для використання розподіленої пам'яті, POSIX Shared Memory. Воно використовує функцію Unix System V чудово забезпечує API для розподіленої пам'яті. Воно використовує shmget з sys/shm.h. BSD-системи забезпечують "anonymous mapped memory" яка може бути використана кількома процесорами. Розподілена пам'ять, створена за допомогою POSIX також забезпечує Дистрибутиви Linux які базуються на 2.6 та новіших версіях kernel пропонують /dev/shm як розподілену пам'ять у формі RAM-диску, конкретніше, як каталог, доступний для запису (директорія, у якій кожен користувач системи може створювати файли) що зберігається у пам'яті. Дистрибутиви, які базуються на RedHat та Debian включають це за умовчанням. Підтримка цього типу RAM-пам'яті не є обов'язковим у файлі конфігурації kernel. Підтримка у WindowsУ Windows функція Підтримка у кросплатформних системахДеякі C++ бібліотеки забезпечують портативний та об'єктноорієнтований доступ до функціонала розподіленої пам'яті. Для прикладу, Boost вміщує в собі Boost.Interprocess C++ бібліотеку. Qt забезпечує клас QSharedMemory. Підтримка мов програмуванняУ мовах окрім C/C++ також забезпечена нативна підтримка розподіленої пам'яті. Для прикладу, PHP забезпечує API для створення розподіленої пам'яті, схоже на функції із POSIX.
|
Portal di Ensiklopedia Dunia