优先级倒置

时间:2011-06-06 11:56:55

标签: multithreading computer-science

我在理解Priority Inversion

时遇到问题

文章摘录:

  

考虑有一个任务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也不被阻挡?

1 个答案:

答案 0 :(得分:4)

因为M不需要资源R,所以它能够运行而L仍然使用它;另一方面,H在L能够释放R之前无法运行。