Изменения

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

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

692 байта добавлено, 17:27, 2 июня 2019
Нет описания правки
[[Категория: Параллельное программирование]]
'''Логическими часами Лампорта''' называется функция из множества событий распределенных систем (внутреннее событие, событие отправки сообщения и событие приема сообщения) в множество неотрицательных целых чисел.
Часы {{Определение|id = logical_clock|definition = '''Логические часы''' — это функция $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'' (обратное, вообще говоря, не верно).
292
правки

Навигация