Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Обмен данными с помощью очередей сообщенийВ этом случае, для организации обмена между несколькими процессами в системе создается глобальная структура данных, в которой хранятся межпроцессные сообщения. Эта структура функционирует как очередь, в которую сообщения записываются от каждого процесса. В сообщении допустимы данные любых типов. Длина области данных может быть произвольной в пределах размера участка памяти, отведенного для очереди в момент его создания. Для каждого процесса ОС обеспечивает процесс размещения сообщений в очереди и чтения сообщений из очереди. Для этого используются системные функции, выполняющие следующие операции: 1) создание очереди сообщений; 2) установка параметров очереди сообщений; 3) посылка сообщений в очередь; 4) получение сообщения из очереди. Очередь сообщений может использоваться для обмена между процессами на одном и том же локальном компьютере. По сравнению с программными каналами, использование очередей сообщений имеет определенные преимущества. Например, чтобы осуществить дуплексную связь между двумя процессами с помощью каналов, необходимо создавать два канала – один для записи данных, а второй – для чтения. В случае использования очередей сообщений, требуется только одна структура данных ОП – собственно очередь. Поэтому скорость обмена существенно повышается. Но имеется и недостаток – ограниченность объема обмениваемой информации, который определяется размерами очереди. Примером использования сообщений для обмена между процессами является применение системных сообщений типа WM_COPYDATA в Windows. Эти сообщения могут посылаться в очередь, либо для пересылки данных из одного процесса в другой может использоваться системный вызов SendMessage(). Этот вызов формируется в сервере, и сопровождается передачей структуры данных COPYDATASTRUCT. В этой структуре передается три значения: 1) 32-битный номер сообщения; 2) количество передаваемых байт данных; 3) указатель на область памяти, где хранятся передаваемые данные. Данная структура передается другому процессу. Он может читать переданные данные, и изменять их, но только после того, как функция SendMessage() не вернет управление передающему процессу.
Дата добавления: 2014-10-10; просмотров: 348; Нарушение авторских прав Мы поможем в написании ваших работ! |