📜  Huang的终止检测算法

📅  最后修改于: 2022-05-13 01:56:11.848000             🧑  作者: Mango

Huang的终止检测算法

黄氏算法是一种在分布式系统中检测终止的算法。该算法由Shing-Tsaan Huang于 1989 年在 Journal of Computers 上提出。

在分布式系统中,进程在任何给定时间点要么处于活动状态,要么处于空闲状态。当所有进程都空闲并且没有任何传输中(在其要传递的途中)计算消息时,就会发生终止。

算法假设:

  • 监控计算的协作进程之一称为控制代理
  • 控制剂的初始权重为 1
  • 所有其他进程最初都是空闲的,权重为 0。
  • 当控制代理向其中一个进程发送计算消息时,计算开始。
  • 该过程在接收到计算消息时变得活跃。
  • 计算消息只能由控制代理或活动进程发送。
  • 当活动进程变为空闲时,控制消息由活动进程发送给控制代理。
  • 该算法为每个活动进程和每个传输中的消息分配一个权重W (使得 0 < W < 1 )。

算法中使用的符号:

  • B(DW):具有权重DW的计算消息
  • C(DW) : 带有权重 DW 的控制消息

算法:



  • 发送 B(DW) 的规则 –
    • 假设权重为W 的进程 P 正在向进程 Q发送 B(DW)
    • 将进程 P 的权重拆分为W1W2
      这样的
      W = W1 + W2  and W1 > 0, W2 > 0
    • 设置进程P的权重为W1 (即W=W1
    • 发送B(W2)处理 Q ,这里DW = W2
    • 注意:只有控制代理或任何活动进程可以发送计算消息。
  • 在进程 Q 收到 B(DW) 时 –
    • 将权重DW添加到进程 Q 的权重,即对于进程 Q, W = W + DW
    • 如果进程 Q 空闲,它将在收到B(DW) 时变为活动状态。
  • 发送 C(DW) 的规则 –
    • 任何具有权重W 的活动进程都可以通过将C(W)发送到控制代理而变为空闲状态
    • 向控制代理发送控制消息C(W)。这里DW = W
    • 将进程的权重设置为 0,即W = 0 。 (此后进程将变为空闲。)
  • 在控制代理收到 C(DW) 时 –
    • 将通过控制消息接收到的权重与控制代理的权重相加,即W = W + DW
    • 添加后,如果控制代理的权重变为1,则可以得出计算已终止的结论。

黄氏算法的优点:

  • 该算法在有限时间内检测到每个真正的终止。

Huang算法的局限性:

  • 如果消息在传输过程中丢失,该算法将无法检测到计算终止。
  • 当处于活动状态的进程失败时,它也不起作用。