Конспект по распределённым ОС (Крюков) (1162768), страница 13
Текст из файла (страница 13)
В качестве уникального идентификатора сообщенияиспользуется его начальный приоритет - логическое время отправления, значение которого наразных процессорах различно.1-ая фаза.Процесс-отправитель посылает сообщение группе процессов (список их идентификаторовсодержится в сообщении).При получении этого сообщения процессы:Приписывают сообщению приоритет, помечают сообщение как «недоставленное» ибуферизуют его.
В качестве приоритета используется временная метка (текущеелогическое время).Информируют отправителя о приписанном сообщению приоритете.512-ая фаза.При получении ответов от всех адресатов, отправитель:Выбирает из всех приписанных сообщению приоритетов максимальный и устанавливаетего в качестве окончательного приоритета сообщения.Рассылает всем адресатам этот приоритет.Получив окончательный приоритет, получатель:a) Приписывает сообщению этот приоритет.b) Помечает сообщение как «доставленное».c) Упорядочивает все буферизованные сообщения по возрастанию их приписанныхприоритетов.d) Если первое сообщение в очереди отмечено как «доставленное», то оно будетобрабатываться как окончательно полученное.Если получатель обнаружит, что он имеет сообщение с пометкой «недоставленное»,отправитель которого сломался, то он для завершения выполнения протокола осуществляетследующие два шага в качестве координатора.1.
Опрашивает всех получателей о статусе этого сообщения.Получатель может ответить одним из трех способов:Сообщение отмечено как «недоставленное» и ему приписан такой-то приоритет.Сообщение отмечено как «доставленное» и имеет такой-то окончательный приоритет.Он не получал это сообщение.2.
Получив все ответы координатор выполняет следующие действия:Если сообщение у какого-то получателя помечено как «доставленное», то егоокончательный приоритет рассылается всем. (Получив это сообщение каждый процессвыполняет шаги фазы 2).Иначе координатор заново начинает весь протокол с фазы 1. (Повторная посылкасообщения с одинаковым приоритетом не должна вызывать коллизий).Необходимо заметить, что алгоритм требует хранения начального и окончательногоприоритетов даже для принятых и уже обработанных сообщений.52.