русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Взаимодействие произвольных процессов


Дата добавления: 2014-11-28; просмотров: 571; Нарушение авторских прав


В UNIX есть набор средств, поддерживающих взаимодействие произвольных процессов. Одно из таких средств - Система Межпроцессного Взаимодействия IPC (InterProcess Communications). Суть этой системы заключается в следующем.

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

1) Именование;

2) Синхронизация;

 

1. Для неименованных каналов, за счет того, что они передавались по родственному наследованию, всегда в процессе были известны дескрипторы, ассоциированные с каналом.

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

 

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

 

Система IPC поддерживает три разновидности разделяемых ресурсов:

1. Разделяемая память.

2. Передача сообщений.

3. Семафоры.

 

1. Разделяемая память.

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



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

 

2. Передача сообщений.

Разделяемым ресурсом здесь является очередь сообщений. Эта очередь может содержать произвольное количество (в пределах разумного) сообщений разной длины и разного типа.

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

 

 

Рисунок 3.10 - Использование очереди сообщений

 

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

Здесь также возникают проблемы синхронизации.

 

3. Семафоры.

Семафоры - это некоторый объект, который имеет целочисленное значение S, и с которым связаны две операции: V(S) и P(S).

Одна позволяет увеличивать значение семафора, другая - уменьшать. С этими изменениями связаны возможности блокировки процесса и разблокировки процесса.

 

Выполнение этих операций не может прерваться до их завершения. Т.е. если семафор реализован в системе, то это должна быть одна команда.

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

Для управления работой семафора есть некоторые функции, которые позволяют реализовывать операции P и V над одним или несколькими семафорами и управлять ресурсом.



<== предыдущая лекция | следующая лекция ==>
Сигналы | Межпроцессное взаимодействие с помощью файловой системы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.197 сек.