Читайте также: |
|
Для хранения посланного, но еще не полученного сообщения необходимо место. Формально оно называется буфером сообщений, неформально " почтовым ящиком " (ПЯ). В них помещаются сообщения и подтверждения (рис. 4.9).
ПЯ - это структурированная переменная. Если объем передаваемых данных велик, то в сообщении указывают, где эти данные можно найти.
Принадлежность почтовых ящиков может быть различна:
а) ПЯ принадлежит определенной паре процессов: не нужна идентификация адресатов, один ПЯ можно использовать для сообщений и подтверждений;
в) ПЯ принадлежит только отправителю: облегчает доставку с одного ПЯ (для клавиатуры - ввод для разных процессов);
г) множество ПЯ, не принадлежащих конкретному адресату: сообщения должны содержать адреса отправителя и получателя (сетевые ОС).
Реализация почтовых ящиков требует применения примитивов, например, Р и V для синхронизации отправителей и получателей. Действительно, пока ПЯ полный, в него нельзя писать и необходимо задержать процесс отправителя. Пока ПЯ пустой, из него нельзя читать и необходимо задержать процесс получателя. Далее, сам ПЯ является ресурсом: пока ПА пишет, ПБ не имеет права из него читать и, наоборот, пока ПБ читает ПА не имеет права в него писать. Здесь требуется несколько семафоров на каждый ПЯ: «читать разрешается», «писать разрешается». Алгоритм получается нетривиальный. Хоар предложил более простой алгоритм с использованием команд "ждать" и "свершить".
Дата добавления: 2015-10-02; просмотров: 47 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Монитор Хоара | | | Очереди |