Silberschatz/Galvin(第 9 版)的《操作系统原理》一书以及 Wikipedia 上关于优先级反转的文章都说,在优先级反转中,高优先级进程不能使用低优先级进程持有的资源作为中等优先级进程抢占低优先级进程并获取该资源。但如果是这样(即,如果允许基于优先级的抢占),为什么高优先级进程不能抢占低优先级进程本身并获取资源?
以下是书中以及维基百科文章中提到的内容:
考虑两个任务 H 和 L,分别具有高和低优先级,其中任何一个都可以获得共享资源 R 的独占使用权。如果 H 在 L 获得 R 之后尝试获得 R,则 H 将被阻塞,直到 L 放弃资源。在一个设计良好的系统中共享一个独占使用的资源(在这种情况下为 R)通常涉及 L 迅速放弃 R,以便 H(更高优先级的任务)不会在过多的时间段内保持阻塞。然而,尽管设计良好,但有可能第三个中等优先级的任务 M (p(L) < p(M) < p(H),其中 p(x) 表示任务 (x) 的优先级)在L 对 R 的使用。此时,优先级高于 L 的 M 抢占 L,导致 L 无法及时放弃 R,进而导致 H(最高优先级的进程)无法运行。