Технология отображаемой памяти 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Технология отображаемой памяти



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

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

Особенности межпроцесорного взаимодействия

Теперь можно сравнить характеристики межпроцесорного взаимодействия с характеристиками взаимодействия потоков одного процесса.

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

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

Базовые механизмы межпроцессового взаимодействия

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

Межпроцессовое взаимодействие на базе общей памяти

Для решения проблемы межпроцессорной синхронизации необходимо:

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

♦ во-вторых, разместить в этой памяти стандартные объекты синхронизации (семафоры, мютексы, условные сменные);

♦ в-третьих, используя эти объекты, работать с совместно разработанны­ми данными, как это делалось в случае использования потоков.

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

Основы передачи сообщений

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

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

Выделяют такие характеристики каналов связи:

-способ задання;

-количество процессов, которые могут быть соединены одним каналом;

-количество каналов, которые могут быть созданы между двумя процессами;

-пропускная способность канала (количество сообщений, которые могут одновременно находиться в системе и быть ассоциированными с этим каналом);

-максимальный размер сообщения;

-направленность связи через канал (двусторонняя или односторонняя связь).

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



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 154; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.128.129 (0.004 с.)