uC/OS-II的任务优先级的反转现象
一个优先级别较低的任务在获得了信号量使用共享资源期间被具有较高优先级别的任务所打断而不能释放信号量,从而使正在等待这个信号量的更高级别的任务因得不到信号量而被迫处于等待状态,在这个等待期间,就让优先级别低于它而高于占据信号量的任务的任务先运行了。出现了优先级反转的现象。显然如果这种优先级别介于使用信号量的两个任务优先级别中间的中等优先级别的任务较多,则会极大地恶化高优先级别任务的运行环境,这是实时系统所无法容忍的。
解决问题的方法之一是使获得信号量任务的优先级别在使用共享资源期间暂时提升到所有任务最高优先级别的高一个级别(因为在使用共享资源的工作上,任务C比任务A的优先级别还要高),以使该任务不被其他任务所打断,从而能尽快地完成共享资源释放并释放信号量,然后在释放了信号量之后再恢复该任务原来的优先级别。