7.2.6.6. Общая память

7.2.6.6. Общая память

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

Общая память может быть представлена различными API-интерфейсами, но в современных Unix-системах реализация обычно зависит от использования функции mmap(2) для отображения файлов в общую память. В стандарте POSIX определяется средство shm_open(3) с API-интерфейсом, поддерживающим использование файлов в качестве общей памяти. Данная функция, главным образом, предоставляет операционной системе возможность не сбрасывать на диск данные псевдофайла.

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

В системах, где это доступно и надежно работает, средство учета (scoreboard facility) Web-сервера Apache применяет общую память для обмена данными между главным процессом Apache и пулом распределения нагрузки образов Apache, которыми он управляет. В современных реализациях системы X также применяется общая память для передачи больших образов между клиентом и сервером, когда они находятся в памяти одной машины. В данном случае эта методика применяется для того, чтобы избежать издержек связи с использованием сокетов. Оба варианта применения представляют собой средство повышения производительности, обоснованное скорее опытом и тестами, чем архитектурным выбором.

Вызов mmap(2) поддерживается во всех современных Unix-системах, включая Linux и версии BSD с открытым исходным кодом. Он описан в единой спецификации Unix (Single Unix Specification). Обычно он недоступен в Windows, классической MacOS и других операционных системах.

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

После появления версии 7 и разделения ветвей BSD и System V эволюция межпроцессного взаимодействия в Unix стала развиваться в двух различных направлениях. Направление BSD привело к появлению сокетов. С другой стороны, ветвь AT&T развивала именованные каналы (как было сказано ранее) и IPC-средство, специально предназначенное для передачи двоичных данных и основанное на двунаправленных очередях сообщений в общей памяти. Это направление называется "System V IPC" или "Indian Hill IPC" (среди профессионалов прежней школы).

Верхний уровень System V IPC, уровень передачи сообщений, почти совершенно вышел из употребления. Нижний уровень, состоящий из общей памяти и семафоров, до сих пор находит широкое применение в условиях, когда необходимо выполнять блокировку с взаимным исключением и некоторое совместное использование глобальных данных между процессами, запущенными на одной машине. Данные средства общей памяти в System V развились в API с общей памятью стандарта POSIX, поддерживаемого в Linux, различных версиях BSD, MacOS X и Windows, но не в классической MacOS.

Используя данные средства общей памяти и семафоров (shmget(2), semget(2) и им подобные), можно избежать издержек копирования данных через сетевой стек. Данная техника интенсивно используется в крупных коммерческих базах данных (включая Oracle, DB2, Sybase и Informix).

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

6.4. Общая аналитика

Из книги Перспективы свободного программного обеспечения в сфере государственного управления и бюджетном секторе автора Отставнов Максим

6.4. Общая аналитика Единственным проектом, специально направленным на изучение ситуации с рынками СПО в России в целом, остается проведенная в 2001 г. рабочая встреча «Свободное программное обеспечение: бизнес-модели и корпоративные инициативы», прошедшая в ходе


Общая память

Из книги Блоги. Новая сфера влияния автора Попов Антон Валерьевич

Общая память Метки: темы блога, внимание, пользовательский контентЛюбой браузер способен запомнить ссылку («закладку») на страницу или сайт целиком. Некоторые ресурсы специально предлагают посетителю сделать стартовой главную страницу или занести ее в «Избранное». Это


СОФТЕРРА: Память на лица, или Лица на память

Из книги Журнал «Компьютерра» № 36 от 3 октября 2006 года автора Журнал «Компьютерра»

СОФТЕРРА: Память на лица, или Лица на память Автор: Алексей КлимовВышла девятая версия ACDSee. Судя по объему нововведений, это не «Девятый вал» Айвазовского [Иван Айвазовский, «Девятый вал». 1850 г] и даже не «9 рота» Бондарчука [Федор Бондарчук, «9 рота». 2005 г]. Поэтому в обзоре


Общая реализация

Из книги Делегаты на C++ автора Шаргин Александр

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


Общая картина

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Общая картина Если у вас от чтения предыдущих разделов уже голова идет кругом, не паникуйте! Прозрачный агент, реальный агент, объект сообщения и диспетчер вы можете, как правило, просто игнорировать, поскольку чаще всего вам вполне подойдут параметры удаленного


Общая настройка ПК

Из книги Delphi. Учимся на примерах автора Парижский Сергей Михайлович

Общая настройка ПК Изменение разрешения экрана Для изменения разрешения экрана (например, на 800?600) следует внести следующие изменения в реестр: Ключ:[HKEY_LOCAL_MACHINEConfig001DisplaySettings]Значение ключа: "Resolution"="800,


Общая информация

Из книги Win2K FAQ (v. 6.0) автора Шашков Алексей

Общая информация (1.1) Что такое Windows 2000? Windows 2000 ака W2k – новая операционная система (ОС) Microsoft, основанная на технологии Windows NT, что отраженно в первоначальном названии проекта W2k – Windows NT 5.0. NT ака New Technology была создана группой разработчиков под руководством Дэйва Катлера,


7.2.6.6. Общая память

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

7.2.6.6. Общая память Тогда как два процесса, использующие для информационного обмена сокеты, могут выполняться на различных машинах (и в действительности могут быть разделены Internet-соединением, "огибающим" половину планеты), общая память (shared memory) требует, чтобы поставщики и


Общая характеристика

Из книги Виртуальные машины [Несколько компьютеров в одном] автора Гультяев Алексей Константинович

Общая характеристика Технология, заложенная в Virtual PC, была разработана компанией Connectix, однако компания Microsoft в очередной раз продемонстрировала чутье на удачные технологические решения и в начале 2003 года приобрела права на Virtual PC. В ноябре 2003 появилась доработанная и


Общая характеристика

Из книги Реферат, курсовая, диплом на компьютере автора Баловсяк Надежда Васильевна

Общая характеристика В настоящее время семейство продуктов от VMware, предназначенных для создания виртуальных машин и управления ими, насчитывает несколько представителей:? VMware Workstation — приложение для «настольных» систем, обеспечивающее создание «обычных» виртуальных


Общая характеристика

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Общая характеристика В настоящее время компания Parallels предлагает три продукта, предназначенные для создания виртуальных машин и управления ими:? Parallels Workstation — настольное приложение для создания виртуальных машин (в том числе объединенных в локальную сеть) в пределах


Общая характеристика программы

Из книги Руководство по переходу на Ubuntu 10.04 LTS «Lucid Lynx» автора Неворотин Вадим

Общая характеристика программы В программе реализована поддержка OLE 2.0 и технологии перетаскивания. Вы можете перетаскивать формулы в документ Word прямо из окна программы, а также редактировать их там.В полной версии MathType доступен набор высококачественных шрифтов, есть


Общая относительность

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

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


Общая картина

Из книги автора

Общая картина Важно проследить за последовательностью происходящих событий. Для рассмотренного выше экземпляра BOOK3 происходит следующее:[x]. (B1) Создан экземпляр QUOTATION. Пусть Q_OBJ - этот экземпляр и имеется сущность a, значение которой ссылка, присоединенная к Q_OBJ. [x]. (B2)


6.1 Общая информация

Из книги автора

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


Г.1. Общая информация

Из книги автора

Г.1. Общая информация ? http://www.advancedlinuxprogramming.com. Это Web-узел данной книги. Здесь можно загрузить текст книги в электронном виде вместе с исходными текстами программ, найти ссылки на другие ресурсы и получить дополнительную информацию о программировании в Linux.? http://www.linuxdoc.org.