RTOS优先级翻转

  在使用二值信号量的时候,会出现低优先级任务获取二值信号量,但二值信号量还没释放时,高优先级任务需要获取二值信号量,这时二值信号量已经被低优先级任务获取,高优先级任务只能挂起,如果这时有一个中优先级任务响应,就会出现中优先级任务响应而高优先级任务不被响应。这种中优先级任务比高优先级任务先响应的现象就是优先级翻转。

  高优先级任务被低优先级任务阻塞,导致高优先级任务迟迟得不到调度。但其他中等优先级的任务却能抢到CPU资源。-- 从现象上来看,好像是中优先级的任务比高优先级任务具有更高的优先权。

  解决优先级翻转的方法是使用互斥信号量。

  互斥信号量中使用了优先级继承。也就是说在高优先级获取一个已经被低优先级获取了的互斥信号量时,会把低优先级的任务的优先级提升到和高优先级任务的优先级一个级别,这样低优先级就可以得到执行,等低优先级的任务执行完毕释放掉互斥信号量,高优先级就可以得到执行。

原文地址:https://www.cnblogs.com/qingyunboke/p/12829400.html