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