无法实现死锁检测算法

时间:2013-03-07 02:32:22

标签: algorithm deadlock

除了一个特别的混淆之外,我已经整理了所有内容:

  

如果Allocation i != 0,则Finish [i]:= false;否则,完成[i]:= true。

这是否意味着该特定行的总和为零或是什么?

算法:

数据结构:

  • 可用:长度为m的向量表示可用的数量 每种类型的资源。
  • 分配:n x m矩阵定义每个资源的数量 当前分配给每个流程的类型。
  • 请求:n x m矩阵表示每个的当前请求 处理。如果Request [i] [j] = k,则处理P i 请求更多资源类型为R j 的实例。
  • 工作:长度为m的矢量。
  • 完成:长度为n的矢量

算法:

  1. 初始化工作:=可用。
    • 对于i = 1,2,...,n,如果Allocation i != 0, 然后完成[i]:= false;否则,完成[i]:= true。
  2. 找到一个索引i,以便:
    • (a)完成[i] = false
    • (b)请求 i < = Work
    • 如果不存在,请转到步骤4.
  3. 工作:=工作+分配 i
    • 完成[i]:= true
    • 转到第2步
  4. 如果Finish [i] = false,对于某些i,1&lt; = i ... n,那么系统陷入僵局 州。此外,如果Finish [i] = false,则进程P i 被解锁。 两个矢量之间的小于或等于的关系(&lt; =)定义如下:令X和Y为长度为n的矢量。当且仅当x [i] <= y [i]对于所有i = 1,2,...,n时,我们说X <= Y.分配和请求矩阵的行被视为向量,在算法中称为Allocation i 和Request i

1 个答案:

答案 0 :(得分:1)

由于Allocation i 是一个向量,“Allocation i != 0”表示针对零向量(向量)测试Allocation i 由全零组成。

换句话说,如果向量中的每个条目都为0,则“Allocation i == 0”。

相关问题