计算机操作系统读书笔记___优先级倒置

版权声明:私藏源代码是违反人性的罪恶行为!博客转载无需告知,学无止境。 https://blog.csdn.net/qq_41822235/article/details/85852322

推荐阅读全面了解调度算法火星探路者太空船上的软件到底怎么了

一、优先级倒置

1.1 形成原因

当前 OS 广泛采用优先级调度算法和抢占方式。高优先级的进程(或线程)被低优先级的进程(或线程)延迟或阻塞。产生的根源是互斥操作的存在。

假如有三个完全独立的进程P1、P2和P3,优先级顺序P1>P2>P3。

 进程的运行具有异步性

假设P3先执行,进入临界区CS-3后,在时刻a,P2就绪抢占了P3的处理机而运行;在时刻b,P1抢占了P2的处理机而运行,但是会在P操作时阻塞;P2继续运行直到时刻d时结束。然后P3接着运行,到时刻e退出临界区并唤醒P1。因为P1的优先级比P3高,所以P1抢占了P3的处理机而运行。

1.2 感受

这个现象诡异就诡异在:根据优先级原则,高优先级进程应当能先执行,但由于P1和P3共享着“临界资源”而出现了不合理的现象,高优先级进程P1因为P3进程被阻塞了,又因为P2进程的存在而延长了P1被阻塞的时间,而且被延长的时间是不可预知和无法限定的。由此所产生的“优先级倒置” 的现象是非常有害的,它不应该出现在实时系统中。

1.3 解决办法

当高优先级进程P1要进入临界区,去使用临界资源R,如果已有一个低优先级进程P3正在使用该资源,此时一方面P1被阻塞,另一方面由P3继承P1的优先级,并一直保持到P3退出临界区。这样的目的在于不让比P3优先级稍高,但比P1优先级低的进程如P2插进来,导致延缓P3退出临界区。

1.4 历史上曾发生的事 

火星探路者太空船就遭遇和优先级反转的事件。

因为“优先级反转”现象的存在,导致优先级最高的总线管理任务长时间得不到运行。以史为鉴,对计算机世界永远带着好奇心吧。 

猜你喜欢

转载自blog.csdn.net/qq_41822235/article/details/85852322
今日推荐