Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга 1 ОС.doc
Скачиваний:
94
Добавлен:
11.11.2018
Размер:
2.44 Mб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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