Логические часы Лампорта

Материал из Викиконспекты
Перейти к: навигация, поиск
НЕТ ВОЙНЕ

24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.

Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.

Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.

Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.

Антивоенный комитет России

Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.
meduza.io, Популярная политика, Новая газета, zona.media, Майкл Наки.


Определение:
Логические часы — это функция $C(e) \colon E \to \mathbb R$ (из событий в числа) такая, что для любых двух событий $e$ и $f$: если $e \to f$ ($e$ произошло-до $f$), то $C(e) < C(f)$.


Следствие только в одну сторону. В обратную сторону часы сделать нельзя, потому что на числах у нас полный порядок, а happens-before задаёт лишь частичный.

Логическими часами Лампорта называется конкретная реализация такой функции $C$ из множества событий распределенных систем (внутреннее событие, событие отправки сообщения и событие приема сообщения) в множество неотрицательных целых чисел.

У каждого процесса заводится счётчик (исходное значение неважно и может даже отличаться в разных потоках). Правила:

  • счётчик увеличивается перед каждым внутренним событием процесса;
  • при отправке сообщения значение счётчика увеличивается и прикрепляется к сообщению;
  • при получении сообщения значение счётчика процесса-получателя выставляется в максимум текущего и полученного значения и увеличивается на 1.

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

Оказывается, что если в распределенной системе ввести частичный порядок предшествования на событиях, то имеет место следующее утверждение:

Если a предшествует b, то логическое время часов Лампорта события a меньше логического времени события b (обратное, вообще говоря, не верно).