Операционные системы распределенных вычислительных систем


Асинхронная фиксация контрольных точек и восстановление. - часть 6


1-ая фаза.

Процесс-отправитель посылает сообщение группе процессов (список их идентификаторов содержится в сообщении).

При получении этого сообщения процессы:

·      Приписывают сообщению приоритет, помечают сообщение как «недоставленное» и буферизуют его. В качестве приоритета используется временная метка (текущее логическое время).

·      Информируют отправителя о приписанном сообщению приоритете.

2-ая фаза.

При получении ответов от всех адресатов, отправитель:

·      Выбирает из всех приписанных сообщению приоритетов максимальный и устанавливает его в качестве окончательного приоритета сообщения.

·      Рассылает всем адресатам этот приоритет.

 

Получив окончательный приоритет, получатель:

a)    Приписывает сообщению этот приоритет.

b)   Помечает сообщение как «доставленное».

c)    Упорядочивает все буферизованные сообщения по возрастанию их приписанных приоритетов.

d)   Если первое сообщение в очереди отмечено как «доставленное», то оно будет обрабатываться как окончательно полученное.

 

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

1. Опрашивает всех получателей о статусе этого сообщения.

Получатель может ответить одним из трех способов:

·      Сообщение отмечено как «недоставленное» и ему приписан такой-то приоритет.

·      Сообщение отмечено как «доставленное» и имеет такой-то окончательный приоритет.

·      Он не получал это сообщение.

 

2. Получив все ответы координатор выполняет следующие действия:

·      Если сообщение у какого-то получателя помечено как «доставленное», то его окончательный приоритет рассылается всем. (Получив это сообщение каждый процесс выполняет шаги фазы 2).

·      Иначе координатор заново начинает весь протокол с фазы 1. (Повторная посылка сообщения с одинаковым приоритетом не должна вызывать коллизий).

 

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

 




Начало  Назад  



Книжный магазин