Jump to content

Общая память

Иллюстрация системы общей памяти трех процессоров

В информатике , общая память - это память которая может быть одновременно доступна несколькими программами с намерением обеспечить связь между ними или избежать избыточных копий. Общая память является эффективным средством передачи данных между программами. В зависимости от контекста, программы могут работать на одном процессоре или на нескольких отдельных процессорах.

Использование памяти для связи внутри одной программы, например, среди ее нескольких потоков , также называется общей памятью.

В оборудовании

[ редактировать ]
HSA определяет особый случай обмена памятью, где MMU ЦП и IOMMU графического процессора имеют идентичное промежуточное виртуальное адресное пространство.

В компьютерном оборудовании общая память относится к (обычно большому) блоку случайного доступа памяти (ОЗУ), к которому можно получить доступ к нескольким различным центральным обработчивым единицам (процессорами) в многопроцессорной компьютерной системе .

Общие системы памяти могут использовать: [ 1 ]

Система общей памяти относительно легко программировать, поскольку все процессоры имеют одно представление о данных, и связь между процессорами может быть таким же быстрым, как доступ к памяти в одно и то же место. Проблема с общими системами памяти заключается в том, что многим процессорам нужен быстрый доступ к памяти и, вероятно, будет кэшировать память , которая имеет два осложнения:

  • Унижение времени доступа: когда несколько процессоров пытаются получить доступ к тому же местоположению памяти, он вызывает споры . Попытка получить доступ к близлежащим местам памяти может привести к ложному обмену . Общие компьютеры памяти не могут очень хорошо масштабироваться. У большинства из них есть десять или меньше процессоров;
  • Отсутствие когерентности данных: всякий раз, когда один кэш обновляется информацией, которая может использоваться другими процессорами, изменение должно быть отражено для других процессоров, в противном случае различные процессоры будут работать с некогерентными данными. Такие протоколы когерентности кэша могут, когда они работают хорошо, обеспечивать чрезвычайно высокопроизводительный доступ к общей информации между несколькими процессорами. С другой стороны, они иногда могут перегружаться и стать узким местом для производительности.

Технологии, такие как переключатели поперечной полосы , сети омега , гипертранспортный или передняя автобуса, могут использоваться для ослабления узких мест.

В случае архитектуры гетерогенной системы которая интегрирует различные типы процессоров, такие как процессоры и графические процессоры , с общей памятью), память (архитектура процессора , управления блок GPU должен делиться определенными характеристиками, такими как общее адресное пространство.

Альтернативами общей памяти являются распределенная память и распределенная общая память , каждая из которых имеет аналогичный набор проблем.

В программном обеспечении

[ редактировать ]

В компьютерном программном обеспечении общая память либо

Поскольку оба процесса могут получить доступ к области общей памяти, такой как обычная рабочая память, это очень быстрый способ общения (в отличие от других механизмов МПК, таких как названные трубы , сокеты домена Unix или Corba ). С другой стороны, это менее масштабируемо, так как, например, процессы связи должны работать на одной и той же машине (других методов IPC, только гнезда интернет -домена, а не гнезда Unix Domain - могут использовать компьютерную сеть ), а осторожность должна быть Принимая во внимание, чтобы избежать проблем, если процессы, разделяющие память, работают на отдельных процессорах, а базовая архитектура не является согласованной кэшем .

МПК от общей памяти используется, например, для передачи изображений между приложением и X -сервером в системах UNIX или внутри объекта ISTERAM, возвращаемого ComarShalThreathReadInterIntStream в библиотеках COM в Windows .

Динамические библиотеки обычно удерживаются в памяти один раз и отображаются с несколькими процессами, и только страницы, которые должны были быть настроены для индивидуального процесса (потому что символ, разрешенный по-разному), дублируются, обычно с механизмом, известным как копия на записи, который прозрачно прозрачно Копирует страницу, когда будет предпринята попытка записи, а затем позволяет записи преуспеть в частной копии.

По сравнению с операционными системами с несколькими адресами. Обмен памятью-особенно процедуры обмена или структуры на основе указателей- проще в однозначных операционных системах . [ 2 ]

Поддержка в Unix-подобных системах

[ редактировать ]

POSIX предоставляет стандартизированный API для использования общей памяти, POSIX Shared Memory . Это использует функцию shm_open от Sys/Mman.h. [ 3 ] POSIX Межпроцессная связь (часть POSIX: XSI расширение) включает в себя функции общей памяти shmat, shmctl, shmdt и shmget. [ 4 ] [ 5 ] System V UNIX V обеспечивает API для общей памяти. Это использует Shmget от Sys/Shm.h. Системы BSD предоставляют «анонимную отображенную память», которая может использоваться несколькими процессами.

Общая память, созданная shm_open настойчив. Он остается в системе до явного удаления процессом. Это имеет недостаток в том, что, если процесс вылетает и не сможет очистить общую память, он останется до отключения системы; этого ограничения не присутствует в специфической для андроиде реализации, названной ashmem. [ 6 ]

POSIX также предоставляет mmap API для отображения файлов в память; Сопоставление может быть обмен, что позволяет использовать содержимое файла в качестве общей памяти.

Распределения Linux, основанные на ядре 2.6, а затем и предлагаете /DEV /SHM в качестве общей памяти в виде диска оперативной памяти , в частности, в качестве всемирного каталога (каталог, в котором каждый пользователь системы может создавать файлы), который хранится в памяти. как Redhat , так и Debian Распределения включают его по умолчанию. Поддержка этого типа оперативной памяти является совершенно необязательной в файле конфигурации ядра . [ 7 ]

Поддержка в Windows

[ редактировать ]

В окнах можно использовать CreateFileMapping и MapViewOfFile Функции для картирования области файла в память в нескольких процессах. [ 8 ]

Кроссплатформенная поддержка

[ редактировать ]

Некоторые библиотеки C ++ предоставляют портативный и объектно-ориентированный доступ к общей функциональности памяти. Например, Boost содержит библиотеку Boost.InterProcess C ++ [ 9 ] и QT предоставляет класс QsharedMemory. [ 10 ]

Поддержка языка программирования

[ редактировать ]

Для языков программирования с привязками POSIX (скажем, C/C ++), можно создать и доступ общие области памяти, вызывая функции, предоставленные операционной системой. Другие языки программирования могут иметь свои собственные способы использования этих операционных средств для аналогичного эффекта. Например, PHP предоставляет API для создания общей памяти, аналогично функциям POSIX . [ 11 ]

Смотрите также

[ редактировать ]
  1. ^ Эль-Сурини, Хешам; Абд-Эль-Барр, Мостафа (2005). Усовершенствованная компьютерная архитектура и параллельная обработка . Wiley-Interscience. С. 77–80. ISBN  978-0-471-46740-3 .
  2. ^ Джеффри С. Чейз; Генри М. Леви; Майкл Дж. ФИЛИ; и Эдвард Д. Ласовский. «Обмен и защита в одной операционной системе пространства адреса» . Два : 10.1145/195792.195795 1993. П.
  3. ^ Документация SHM_OPEN из одной спецификации UNIX
  4. ^ Роббинс, Кей А.; Роббинс, Стивен (2003). Программирование систем UNIX: коммуникация, параллелизм и потоки (2 изд.). Prentice Hall Ptr. п. 512 . ISBN  978-0-13-042411-2 Полем Получено 2011-05-13 . Коммуникация Posix Interprocess (IPC) является частью расширения POSIX: XSI и имеет свое происхождение в System V System V System V.
  5. ^ Общая память из отдельной спецификации UNIX.
  6. ^ «Особенности ядра Android» . elinux.org . Получено 12 декабря 2022 года .
  7. ^ Кристоф Рохланд; Хью Дикинс; Косаки Мотохиро. "Tmpfs.txt " Kernel.org Получено 2010-03-1
  8. ^ Создание названной общей памяти из MSDN.
  9. ^ Boost.InterProcess C ++ Библиотека
  10. ^ «Ссылка на класс QSharedMemory» .
  11. ^ Общие функции памяти в PHP-API
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 6b44f4ce61290ebeff111b5fc00020e8__1701278280
URL1:https://arc.ask3.ru/arc/aa/6b/e8/6b44f4ce61290ebeff111b5fc00020e8.html
Заголовок, (Title) документа по адресу, URL1:
Shared memory - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)