优先级反转
操作系统有多个任务,而任务之间谁可以得到执行,是通过任务调度来完成的,而常见的调度算法中,有一种便是基于优先级的调度算法,根据优先级高低去调度,优先让高优先级的任务去执行的,任务调度器,总是去激活某个,在所有任务中优先级是最高的,且处于就绪状态的,任务,即让其去执行。
举例:
例如现在有三个线程ABC它们同时抢占1,优先级A>B>C,它们三个同时抢占1这个资源。
A首先入栈,说:我要执行任务,需要1,
但是C已经跑了,
然后B来了它也要执行任务,需要1.。
从栈上来讲.抢夺1这个资源的命令.A跑到了栈底。
B呢,给后入栈了。
栈的特点是???先进后出.
B先抢到了。
解决方案:
优先级继承
优先级继承是指将低优先级任务的优先级提升到等待它所占有的资源的最高优先级任务的优先级.对于占了高优先级任务A的某种所需资源的低优先级任务C,赋予给低优先级任务C和高优先级任务A相同的优先级,这种方案的好处就是只有高优先级被阻塞的时候才会触发此方案。(先让监控线程在CUP0)
优先级天花板
优先级天花板是指将申请某资源的任务的优先级提升到可能访问该资源的所有任务中最高优先级任务的优先级.(这个优先级称为该资源的优先级天花板) ,相当于A与C都可以具有该资源享用的相同优先级,变就是都可以访问该资源了,A不用等C释放资源就可以访问该资源
详细了解:
视频:https://www.bilibili.com/video/BV1v7411473a?t=3320
拨款:https://blog.csdn.net/sinat_39393179/article/details/101706104