目录
1.什么是任务优先级翻转?
2.举一个翻转的时序图(图片来自网络)
3.优先级翻转的危害
4.解决优先级翻转的方法
1.什么是任务优先级翻转?
优先级翻转就是一个中断优先级的任务在某种情况下,比高优先级任务优先执行,造成了一种任务优先级翻转的现象。
补充说明:这种情况的一种情景:
前置条件:当前有三个任务A,B,C优先级大小是A>B>C;信号量M
C任务正在执行,它持有信号量M,A优先级任务需要通过信号量M去访问一个共享资源,但是被C占有导致,A被阻塞,可能出现C运行中,出现比A低的B优先级任务(不需要这个信号量执行任务)抢占了C的优先级。造成A和B任务翻转。
2.举一个翻转的时序图(图片来自网络)
A
当前有三个任务A,B,C优先级大小是A>B>C;共享资源M。就是1中描述的现象。
3.优先级翻转的危害
造成任务调度实时性不准确;
造成任务逻辑错误;
造成系统崩溃;
4.解决优先级翻转的方法
方法一:程序规划的时候,减少互斥和信号量的使用。
方法二:使用互斥量,因为互斥量有优先级继承的特性。
方法三:动态调整优先级:当有比正在执行的任务优先级高的任务也访问共同资源时,把正在执行的任务优先级提到最高优先级,执行完毕后再变会原来的优先级。