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) --------一(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。这意味着所有这些事件都发生在同一个进程上,因为否则链中的一对事件必须通过消息路径连接(因为它们是有序的,因此是因果连接的),但每条消息发送和接收都会改变向量时钟的 2 个分量(一次用于发送,一次用于接收)。

因此,链中的所有事件都发生在同一个进程上,但是对应于该进程的时钟分量必须沿着链单调增加。矛盾。

于 2013-01-30T09:51:21.433 回答