文章摘录:
考虑有一个任务L,低 优先。此任务需要资源 R.考虑到L正在运行它 获得资源R.现在,有 另一个任务H,具有高优先级。 此任务还需要资源R. 在L获得后考虑H开始 资源R.现在H必须等到L 放弃资源R。
一切都按预期工作 这一点,但问题出现的时候 新任务M以中等优先级开始 在这段时间。 `因为R还在 在使用中(由L),H无法运行。从M开始 是未被阻止的最高优先级 任务,它将在L之前安排 由于L已被M,L抢占 不能放弃R.所以M会跑 直到它完成,然后L将运行 - 至少达到可以的程度 放弃R - 然后H会跑。 因此,在上面的场景中,一个任务 中等优先级在任务之前运行 高度优先,有效地给我们一个 优先倒置。
这个问题与文章的第二部分有关。为什么具有H(较高)优先级的进程不能抢占具有L(较低)优先级的进程,但是具有M(中等)优先级的进程可以先发制人?即如果在使用R之后H被阻止,为什么M也不被阻挡?
答案 0 :(得分:4)
因为M不需要资源R,所以它能够运行而L仍然使用它;另一方面,H在L能够释放R之前无法运行。