Изменения

Перейти к: навигация, поиск

Алгоритм Лампорта

829 байт добавлено, 11:10, 3 июня 2019
Нет описания правки
[[Категория: Параллельное программирование]]
Алгоритм организует полный порядок на сообщениях.Модифицируем [[Алгоритм Лампорта взаимного исключения|алгоритм Лампорта взаимного исключенияобщий порядок сообщений]]. Будем предполагать FIFO-порядок сообщений. Также будем предполагать, что сообщения транслируются всем процессам. Каждый процесс содержит логические часы и очередь отправленных сообщений.
Модифицируем [[Алгоритм Лампорта взаимного исключения|алгоритм Лампорта взаимного исключения]]. Будем предполагать FIFO-порядок сообщений. Также будем предполагать, что сообщения транслируются всем процессам (для multicast-сообщений это неэффективно, потому что придётся отсылать их всем и фильтровать на стороне получателя). Каждый процесс содержит логические часы и очередь отправленных сообщений. Алгоритм действует по следующим правилам(на лекции и в Garg они не очень подробно разобраны, тут дописано):# Чтобы отправить сообщение , процесс транслирует сообщение и свое время всем остальных процессам, включая себя (шаг аналогичен запросу на вход в критическую секцию)# При приеме сообщения оно сохраняется :#* Сохраняется вместе со временем и отправляется #* Отправляется подтверждениеинициатору, также помеченное временем(шаг аналогичен подтверждению запроса)# Сообщение может быть доставлено процессуКогда инициатор получает все подтверждения и у его broadcast-сообщения минимальное время из известных, если от всех остальных потоков получены можно разослать всем подтверждение обработки этого сообщения с большей временной меткой , после чего процессы его обработают и удалят из очереди (шаг аналогичен работе и отпусканию критической секции). Итого $3(n-1)$ сообщений на каждый broadcast (не обсуждалось на лекции или в книжке, но вроде так).
292
правки

Навигация