【问题标题】:Trouble implementing a deadlock detection algorithm执行死锁检测算法时遇到问题
【发布时间】:2013-03-07 02:32:21
【问题描述】:

我已经解决了所有问题,除了一个具体的混淆:

如果分配i != 0,则 Finish[i] := false;否则,Finish[i] := true。

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

算法:

数据结构:

  • 可用:长度为 m 的向量表示可用的数量 每种类型的资源。
  • 分配:一个 n x m 矩阵定义了每个资源的数量 当前分配给每个进程的类型。
  • 请求:一个 n x m 矩阵表示每个请求的当前请求 过程。如果 Request[i][j] = k,那么进程 Pi 是 请求资源类型 Rj 的 k 个更多实例。
  • 工作:长度为 m 的向量。
  • 完成:长度为 n 的向量。

算法:

  1. 初始化工作:=可用。
    • 对于 i = 1、2、...、n,如果分配i != 0, 然后 Finish[i] := false;否则,Finish[i] := true。
  2. 找到一个索引 i 使得两者:
    • (a) 完成[i] = 假
    • (b) 请求i
    • 如果不存在这样的 i,请转到步骤 4。
  3. 工作 := 工作 + 分配i
    • 完成[i] := true
    • 转到第 2 步
  4. 如果 Finish[i] = false,对于某些 i,1 i 会死锁。 两个向量之间的小于或等于关系 (i 和 Requesti

【问题讨论】:

    标签: algorithm deadlock


    【解决方案1】:

    由于 Allocationi 是一个向量,“Allocationi != 0”表示将 Allocationi 与零向量(向量由全零组成)。

    换句话说,“分配i == 0”当且仅当向量中的每个条目都是 0。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 2016-01-22
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 2013-02-08
      • 1970-01-01
      相关资源
      最近更新 更多