相信做过要求实时性项目的朋友或初学RTOS的同学,都听过关于任务优先级翻转的关键词,对于任务优先级翻转是不可容忍的,因为其会影响系统的实时性,更甚之会导致高优先级任务无法运行,既然是高优先级任务,那么其重要性也是显而易见的。下面就步入主题,谈谈关于任务优先级翻转的内容。
目录
1、什么是任务优先级?
解:任务优先级,顾名思义是各个任务的优先级,搞过前后台编程的朋友都知道,基于微控制器编程难免会涉及到中断的应用,那么应用中断必然就会接触到中断优先级。没接触过中断优先级也没关系,这里我会介绍下关于优先级的知识点。
关于优先级,字面意思就是在同条件下,享有优先的权力。中断优先级与任务优先级亦是如此。
2、什么是任务优先级翻转?
解:举例:任务A、B、C三个任务,优先级从大到小排序A>B>C,其中任务C持有任务A需要的资源,导致任务A被迫等待,但是在等待期间,任务B是可以执行的,当任务B执行时,就打破了系统中任务的执行顺序,从而导致优先级发生了翻转。
相信有相关经历的朋友应该知道了在嵌入式行业中,发生优先级翻转的前提条件是什么了,那就是任务之间关于资源共享的问题。关于此问题,请继续看下文。
3、导致任务有优先级翻转的原因是什么?
解:导致优先级翻转的原因就是对任务之间共享资源的管控不严谨。
4、避免任务优先级翻转的方法有哪些?
解:避免任务优先级翻转的方法:
优先级继承协议:当一个高优先级任务由于低优先级任务持有的资源发生阻塞时,低优先级任务临时继承高优先级任务的优先级。
优先级天花板协议:该协议与优先级继承类似,不同的就是针对给共享资源设置优先级(成为天花板优先级),当任务请求资源时,如果自身优先级低于天花板优先级,那就提升该任务优先级至天花板优先级。
堆锁:在任务请求资源时,它会临时提高自己的优先级到所有持有该资源任务的最高优先级以上。
以上方法均可以让低优先级任务可以尽快完成资源的使用并释放资源,从而减少高优先级任务的等待时间、提高其实时性。
5、基于RTOS如何实现优先级继承?
解:通过上述内容,相信大家应该了解了关于任务优先级翻转的原因,总之就是合理协调任务之间的资源共享问题。在RTOS中,已经给出了相关同步机制解决该问题。
互斥锁:是专门设计用来实现优先级继承的同步机制。
信号量:不支持优先级继承
综上,在RTOS中,涉及资源共享的任务,使用互斥锁的优先级继承机制,是可以有效避免任务优先级翻转的问题。各有各的优缺点,若有想详细了解任务同步机制的同学,欢迎评论区留言或私信,作者会以文章的方式进行详解。

7969

被折叠的 条评论
为什么被折叠?



