Ras*_*yak 3 c embedded microcontroller rtos
我想知道为什么抢占不解决优先级倒置问题?
如果我们有抢先内核.那么为什么优先级倒置问题无法解决?
好吧,假设我们有两个流程.我们还假设具有较低优先级的进程获得锁定.当优先级较高的进程准备就绪时,它会抢占其他进程.如果优先级较高的进程需要该锁定,则由于具有较低优先级的其他进程而无法获取该锁定.这意味着,优先级较低的进程会阻止优先级较高的进程.它可以防止更高优先级的进程运行.这称为"优先级倒置".
显然,抢占不是优先级倒置的解决方案.解决方案是"优先级继承".这意味着我们应该在获取优先级较高的进程所需的锁时临时增加进程的优先级.它应该是可能需要相同锁定的其他进程中的最高优先级进程.
让3个线程A,B,C分别具有高,中,低优先级。
Ç获取所述处理器,并采取锁定大号。然后乙是由一些事件和阻击唤醒Ç。现在,A被唤醒并抢占B获得处理器。A想要锁L,但是失败,因为L已经由C拥有。一个被抢占,因为锁不可用,并还给处理器乙。我们不得不等待乙来完成,这终将回馈处理器最终Ç。C将完成并释放锁,最后将其唤醒一。
这是优先级倒置,因为B运行,而系统中的线程A具有较高的优先级,等待较低优先级的线程(在本例中为C)的完成。
顺便说一句,解决方案是优先级继承。