Распределенные логические часы

логические часы

Логические часы используются для фиксации причинных зависимостей событий в распределенном вычислительном процессе.

Логические часы — это функция, которая принимает событие eee отображается во временную областьTTНекоторое значение в T , выраженное как C ( e ) C (e)C ( e ) , а в случаеeee временная метка.

ei → ej e_i \rightarrow e_jеяедж, то C(ei) > C(ej) C(e_i)>C(e_j)С ( ея)>С ( едж) , но не наоборот. Поэтому мы не можем судить о порядке, в котором произошли два события, исходя из размера метки времени.

Чтобы решить эту проблему, мы добавляем номер процесса к метке времени, обозначаемой как C i ( e ) C_i (e)Ся( д ) . Для двух процессовpi p_iпяи pj p_jпдж,若i <j i<jя<j , называемыйpi p_iпяПриоритет меньше, чем pj p_jпджприоритет.

Обратите внимание, что приоритет процесса может быть указан произвольно, здесь для удобства понимания в качестве приоритета используется номер процесса.

这时, eix → ejy ⇔ C i (eix) < C j (ejy) или C i (eix) = C j (ejy) и i < j e_i^x \rightarrow e_j^y \Leftrightarrow C_i(e_i^x) <C_j(e_j^y)~~или~~ C_i(e_i^x)=C_j(e_j^y)~and~i<jеяхеДжуСя( еях)<Сдж( еДжу) или С    я( еях)"="Сдж( еДжу) и я _  <Дж


Метод расчета логических часов:
  • Начальное значение логических часов каждого процесса равно 0.
  • если процесс IIКогда в i происходит событие , значение его логических часов увеличивается на единицу, то естьC i = C i + 1 C_i=C_i+1Ся"="Ся+1
  • Если процесс вы iiя для обработкиjjКогда j отправляет сообщение, логическое значение часов процесса i сначала увеличивается на единицу, а затемC i C_iСяИ сообщение отправляется в прошлое, процесс jjj обновляет свои собственные логические часы какC j = max ( C i , C j ) + 1 C_j=max(C_i,C_j)+1Сдж"="макс ( С _я,Сдж)+1

Guess you like

Origin blog.csdn.net/weixin_46878177/article/details/127349848