русс | укр

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

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

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

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


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

Почтовые ящики


Дата добавления: 2013-12-23; просмотров: 924; Нарушение авторских прав


Лекция 8.

 

 

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

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

 

Размер и количество буферов определяется при создании почтового ящика.

Головной элемент обычно содержит информацию о количестве буферов и их размерах.

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

В тех случаях когда передаваемые сообщения очень длины, то может передаваться не само сообщение, а только адрес того сообщения, где оно находится.

Почтовые ящики могут использоваться отправителями и получателями по-разному. Может быть обеспечена связь между 1 отправителем и одним получателем – это простейший случай.

Правило работы с почтовыми ящиками могут различаться у ОС.

Некоторый процесс Р1 может передать, а Р2 может читать. При этом Р2 может читать, а может не читать.

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

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



Иногда используется и такой режим работы с почтовыми ящиками:

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

 

Реализация почтовых ящиков требует использования специальных операторов. Наиболее типовые операторы:

 

1. SEND_MESSADGE (получатель, сообщение, буфер )

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

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

 

2. WAIT_MESSADGE ([отправитель], [ сообщение ], [ буфер ])

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

 

3. SEND_ANSWER (ответ, [буфер])

Ответ помещается в буфер в котором находилось сообщение. Если отправитель ждал ответ, то он разблокируется.

 

4. WAIT_ANSWER (ответ, буфер)

Процесс блокируется до тех пор, пока ответ не поступает.

 

Основные достоинства использования почтовых ящиков:

+ простота, привычный механизм обмена сообщениями.

+ почтовые ящики могут служить синхронизаторами.

+ получатель и отправитель достаточно независимы друг от друга (т. е могут ждать, а могут и не ждать)

 

Программные каналы (pipe)

Это другое средство передачи сообщения от одного процесса к другому. Иногда называют конверторами. Они характеризуются следующим:

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

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

3. Программный канал всегда работает только по дисциплине FIFO. Один указатель показывает на первый байт, а второй - на последний. Поэтому программный канал, несмотря на то, что использует файл на диске рассматривается как некоторый поток данных.

 



<== предыдущая лекция | следующая лекция ==>
Лекция 7. | Очереди сообщений


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


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

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

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


 


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

 
 

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

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