~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 441BE984851657E588281E26F48B234C__1701278280 ✰
Заголовок документа оригинал.:
✰ Shared memory - Wikipedia ✰
Заголовок документа перевод.:
✰ Общая память — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Shared_memory ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/44/4c/441be984851657e588281e26f48b234c.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/44/4c/441be984851657e588281e26f48b234c__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 05:21:20 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 29 November 2023, at 20:18 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Общая память — Википедия Jump to content

Общая память

Из Википедии, бесплатной энциклопедии
Иллюстрация системы общей памяти из трех процессоров.

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

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

Аппаратно [ править ]

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

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

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

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

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

Такие технологии, как перекрестные коммутаторы , сети Omega , HyperTransport или внешняя шина, можно использовать для смягчения эффектов узких мест.

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

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

В программном обеспечении [ править ]

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

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

IPC по общей памяти используется, например, для передачи изображений между приложением и X-сервером в системах Unix или внутри объекта IStream, возвращаемого CoMarshalInterThreadInterfaceInStream в COM-библиотеках под Windows .

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

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

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

POSIX предоставляет стандартизированный API для использования общей памяти — POSIX Shared Memory . Здесь используется функция shm_open из sys/mman.h. [3] Межпроцессное взаимодействие POSIX (часть расширения POSIX:XSI) включает функции общей памяти. shmat, shmctl, shmdt и shmget. [4] [5] Unix System V также предоставляет API для общей памяти. Для этого используется shmget из sys/shm.h. Системы BSD предоставляют «анонимную отображаемую память», которая может использоваться несколькими процессами.

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

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

Дистрибутивы Linux, основанные на ядре 2.6 и более поздних версиях, предлагают /dev/shm в качестве разделяемой памяти в виде RAM-диска , точнее, в виде общедоступного каталога (каталог, в котором каждый пользователь системы может создавать файлы), который хранится в памяти. Оба дистрибутива на основе RedHat и Debian включают его по умолчанию. Поддержка этого типа RAM-диска совершенно необязательна в файле конфигурации ядра . [7]

Поддержка в Windows [ править ]

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

Кроссплатформенная поддержка [ править ]

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

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

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

См. также [ править ]

Ссылки [ править ]

  1. ^ Эль-Ревини, Хешам; Абд-эль-Барр, Мостафа (2005). Усовершенствованная компьютерная архитектура и параллельная обработка . Уайли-Интерсайенс. стр. 77–80. ISBN  978-0-471-46740-3 .
  2. ^ Джеффри С. Чейз; Генри М. Леви; Майкл Дж. Фили; и Эдвард Д. Лазовска. «Совместное использование и защита в операционной системе с единым адресным пространством» . два : 10.1145/195792.195795 1993. стр. 3
  3. ^ Документация shm_open из единой спецификации Unix.
  4. ^ Роббинс, Кей А.; Роббинс, Стивен (2003). Системное программирование Unix: связь, параллелизм и потоки (2-е изд.). Прентис Холл PTR. п. 512 . ISBN  978-0-13-042411-2 . Проверено 13 мая 2011 г. Межпроцессное взаимодействие POSIX (IPC) является частью расширения POSIX:XSI и берет свое начало в межпроцессном взаимодействии Unix System V.
  5. ^ Функция общей памяти из единой спецификации Unix.
  6. ^ «Функции ядра Android» . elinux.org . Проверено 12 декабря 2022 г.
  7. ^ Кристоф Роланд; Хью Дикинс; КОСАКИ Мотохиро. "tmpfs.txt" . ядро.орг . Проверено 16 марта 2010 г.
  8. ^ Создание именованной общей памяти из MSDN.
  9. ^ Библиотека Boost.Interprocess C++
  10. ^ «Справочник по классу QSharedMemory» .
  11. ^ Функции общей памяти в PHP-API

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 441BE984851657E588281E26F48B234C__1701278280
URL1:https://en.wikipedia.org/wiki/Shared_memory
Заголовок, (Title) документа по адресу, URL1:
Shared memory - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)