Автор оригинала: David Wong.
Общая память-это эффективный способ обмена и передачи данных между двумя запущенными процессами на одной машине. Общая память между различными процессами обычно организована как одна и та же физическая память. Как следует из названия, общая память позволяет двум несвязанным процессам обращаться к одной и той же логической памяти. Процесс может создать сегмент памяти, к которому могут получить доступ другие процессы, если ему назначены правильные разрешения. Каждый сегмент памяти имеет уникальный идентификатор (называемый schmidt), который указывает на область физической памяти, в которой могут работать другие процессы. Как только будут созданы и предоставлены соответствующие разрешения, другие процессы на той же машине смогут работать с этими сегментами памяти: чтение, запись и удаление. Если процесс записывает данные в общую память, внесенные изменения немедленно повлияют на любые другие процессы, которые могут получить доступ к тому же сегменту общей памяти.
Это указывает на то, что приложения, написанные на C, могут обмениваться информацией с приложениями, написанными на других языках, таких как Java или PHP. Общая память широко используется в большинстве языковых реализаций, поэтому доступ не должен быть проблемой. Для понимания информации мы можем использовать стандартный формат, такой как XML или JSON.
Использование общей памяти-это быстрый способ обмена данными между процессами, главным образом потому, что он не требует, чтобы ядро передавало данные после создания сегментов памяти. Этот метод часто называют межпроцессной связью (IPC). Другие методы IPC включают каналы, очереди сообщений, RPC и сокеты. Эта возможность быстрого и надежного обмена данными между приложениями очень полезна при использовании экосистемы приложений, которым необходимо взаимодействовать друг с другом. В зависимости от размера экосистемы распространенные методы обмена информацией между приложениями, использующими базы данных, часто приводят к медленным запросам и даже блокировкам ввода-вывода. При использовании общей памяти никакие операции ввода-вывода не замедляют прогресс разработчиков.
Общая память не обеспечивает механизм синхронизации, то есть нет автоматического механизма, предотвращающего запуск второго процесса для чтения общей памяти до того, как первый процесс завершит операцию записи. Поэтому нам обычно нужны другие механизмы для синхронизации доступа к общей памяти.
Предложение в этой статье очень простое. Узнайте, как использовать PHP для создания сегментов общей памяти и управления ими, а также для хранения наборов данных, которые могут использоваться другими приложениями. Даже без плана обмена данными с использованием общей памяти он имеет много преимуществ сам по себе, поскольку он защищает приложения от проблем ввода-вывода. Хранение наборов данных непосредственно в памяти имеет множество преимуществ, начиная от кэширования данных веб-служб и заканчивая общим доступом к сеансам. Это очень полезная концепция, которую должен знать каждый разработчик PHP.
Преимущества и недостатки использования общей памяти 1. Преимущества: Мы видим, что использование общей памяти для межпроцессного взаимодействия действительно очень удобно, а интерфейс функций прост. Совместное использование данных также позволяет не передавать данные между процессами, а напрямую обращаться к памяти, а также повышает эффективность программы. В то же время это не требует, чтобы процесс общения имел определенные отношения между отцом и сыном, как это делают анонимные трубопроводы.
2. Недостаток: Общая память не обеспечивает механизм синхронизации, что заставляет нас использовать общую память для межпроцессной связи, часто используя другие средства для межпроцессной синхронизации.
Общая память может использоваться в качестве уникального хранилища для обеспечения быстрых операций чтения/записи и совместимости процессов. Для веб-приложений это означает:
Хранение кэша (запросы к базе данных, данные веб-служб, внешние данные) Хранение сеансов Обмен данными между приложениями Эта технология хранения полезна не только для кэширования, но и для обмена данными между приложениями, если данные хранятся в формате, удобном для чтения с обоих концов. Не стоит недооценивать возможности общей памяти в веб-приложениях. Существует множество различных способов гениальной реализации этого хранилища, единственным ограничением являются творческие способности и навыки разработчиков.
Оригинал: “https://developpaper.com/as-a-php-learn-about-the-concept-of-shared-memory-and-its-advantages-and-disadvantages/”