2

イベントの関係の前に起こった半順序を説明するために、ベクトルクロックのタイムライン図を描くように求めている質問があります。

ベクタークロックは次のとおりです。

V(a) = (4,4,2)
V(b) = (4,2,2)
V(c) = (2,2,3)
V(d) = (4,3,2)
V(e) = (4,4,4)
V(f) = (3,2,2)

各イベントがどのプロセスに属しているかを判断する方法がわかりません。私が持っているすべての例では、0から始まる値を持つベクトルクロックを使用しています(例:V(a)=(1,0,0))。したがって、イベントaが最初に発生するイベントであるか、他のプロセスと同時であると想定します。しかし、私はこの特定の質問をどのように行うかわかりません。

誰か助けてもらえますか?

ありがとう

4

2 に答える 2

5

あなたが探しているのは次の図です:

p1 -​​------ f(3,2,2)----------- b(4,2,2)--------------- ---------------------

p2 --------------------------------- d(4,3,2)-------- a(4,4,2)--------------

p3 -------- c(2,2,3)--------------------------------- ---------- e(4,4,4)---

ここで、b->dとa->eの間にもプロセス間通信があります

何故ですか?

共通点があるプロセスが同じ行にあることがわかります。次に、そのプロセスの行で何も変更されていないことを考慮して、プロセス行でそれらを論理的に順序付けることができます。それらのそれぞれに対してこれを行うと、相互作用全体を簡単にスケッチできます。

これがあなたが探していたものであることを願っていますが、これはかなり古い質問だと思います。:D

于 2013-05-03T15:58:57.903 に答える
0

Fidgeによって説明されているように、元のベクトルクロックアルゴリズムを想定すると、この一連のベクトルクロックの読み取りは不可能です。

まず、線形に順序付けられたイベントのチェーンがあることに注意してください:f <b <d<a<e。このチェーンの各要素は、1つのクロックコンポーネントと1だけが次の要素と異なります。これは、チェーンからのイベントのペアがメッセージのパスで接続されている必要があるため、これらすべてのイベントが同じプロセスで発生することを意味します(それらは順序付けられているため、因果関係があります)が、各メッセージの送信と受信は、ベクタークロックの2つのコンポーネントを変更します(送信用に1回、受信用に1回)。

したがって、チェーンからのすべてのイベントは同じプロセスで発生しますが、このプロセスに対応するクロックコンポーネントは、チェーンに沿って単調に増加する必要があります。矛盾。

于 2013-01-30T09:51:21.433 に答える