論理時計の条件

  1. happend-before ()ならば、となる (Timestamp Completeness)
    • はイベント
  2. ならば、 (Timestamp Soundness)

線形時間

Lamport_Clock

  • Scalar logical clocksとも
  • 各プロセスは、線形時間を示す変数を持つ。
  • 各プロセスが送信するメッセージは、線形時間を運ぶ変数を持つ。
  • 各プロセスは、以下のイベントを発生させる。
    • 送信イベント
      1. とする
      2. を送信する。
      • となる
    • 受信イベント
      1. を受信する
      • となる。
    • 計算イベント
      1. 計算を行う
      • となる。
  • 線形時間の性質
    1. ならば、である
    2. しかし、1.の逆は成り立たないことがある
    3. であるとき、かつとなるイベントが存在するかはわからない よって、線形時間は論理時計の条件1を充足するが、2は充足しない。

ベクタ時間

Vector_Clock

  • ベクタ時間の性質

    1. のとき、かつそのときに限り、である
      • 論理時計の条件を満たしている
        • だから、[因果関係]を表現できる
        • 並行関係が保存されている(kekeho)
    2. であるときに、かつとなるイベントが存在するかどうかはわからない
  • 空間計算量が bitsになるので、大規模システムに適さないとされる

  • システムにおけるプロセス数をとしたときに、各プロセスは、となるベクターをタイムスタンプとして保持する。

  • プロセスは計算およびメッセージの送受信イベントが発生するたびに、をインクリメントする。

  • また、Lamportの論理クロックと同様にメッセージのペイロードにタイムスタンプを添付する。

  • タイムスタンプをペイロードに持つメッセージを受信した際には、ベクターのマージ操作を実行し、これをインクリメント前のタイムスタンプ値として採用する。

  • なお、ベクター間の順序関係は以下で定義される。

いろいろな論理時計

参考

p2p 分散システム