谷动谷力

 找回密码
 立即注册

扫一扫,访问微社区

谷动谷力 首页 嵌入式 查看内容

基于操作系统的优先级反转和避免反转的详细介绍

2019-6-16 21:54| 发布者: admin| 查看: 41| 评论: 3|原作者: sunsili

摘要: 实时操作系统(Real-time operating system, RTOS)是说,任务切换和中断响应的时间必须保证在多少时间内(如5us内)完成。 分为硬实时和软实操作系统: 硬实时是说必须在多少时间内完成切换(如VxWorks, 我们使用 ...
实时操作系统(Real-time operating system, RTOS)是说,任务切换和中断响应的时间必须保证在多少时间内(如5us内)完成。
     分为硬实时和软实操作系统:
     硬实时是说必须在多少时间内完成切换(如VxWorks, 我们使用的ecos也是硬实时的)
     软实时则是绝大多数情况可以在多少时间内完成切换(如linux)

     从原理来看判断一个系统是否是实时只需要看它的调度算法即可,具体能实时在多少时间内,则要区分不同硬件了。

     为什么需要实时操作系统呢?
     举一个经常使用的实例,中高档汽车中使用的气囊。当报告车辆碰撞的传感器中断CPU后,操作系统应快速地分配展开气囊的任务,并且不允许任何其他非实时处理进行干扰,晚一秒钟展开气囊比没有气囊的情况更糟糕,这就是一个典型的必须使用硬实时的系统。
     除为中断处理提供确定性外,实时处理也需要支持周期性间隔的任务调度。大量控制系统要求周期性采样与处理。某个特定任务必须按照固定的周期(p)执行,从而确保系统的稳定性。考虑一下汽车的防抱死系统(ABS)。控制系统对车辆的每个车轮的转速进行采样(每秒最多 20 次)并控制每个制动器的压力(防止它锁死)。为了保持控制系统的正常工作,传感器的采样与控制必须按照一定的周期间隔。这意味着必须抢占其他处理,以便 ABS 任务能按照期望的周期执行。

     大多数实时操作系统使用的都是基于优先级的可抢占式调用策略,同一优先级则使用时间片轮转调度。

     什么是优先级反转
     优先级反转的含义是说高优先级的任务被迫等待低优先级任务执行。
     因为多进程共享资源, 当出现互斥资源访问时,基于优先级调度会有如下这种现象:
     三个任务task1, task2, task3,优先级 task1 > task2 > task3,当task1和task2某种原因被阻塞时,task3调度执行,task3执行时占用互斥资源A执行临界区代码时,很巧task1这时从阻塞状态恢复,基于优先级的调度会立即调度到task1执行,而task1执行时又需要持有互斥资源A,因此task1再度进入阻塞状态,等待task3执行。task3执行还未释放互斥资源A,这时task2从阻塞状态恢复立马得到调度执行并一直等到task2执行完毕。这时就相当于高优先级的task1需要等待中优先级的task2执行了,这就是优先级反转。

     如何避免优先级反转?
     解决优先级反转有许多方法,普遍使用的有两种:优先级继承;极限优先级。
     优先级继承:当高优先级的任务需要等待低优先级任务释放互斥资源时,暂时先把低优先级任务的优先级提升至和高优先级任务优先级一样。这样就确保了不会有其他中优先级任务抢占执行。(ecos产品使用这种)
     极限优先级:当任务占用互斥资源执行临界区代码时,先把该任务的优先级提升至极限优先级(系统最高优先级),等到释放资源时再降回原有优先级。

基于操作系统的优先级反转和避免反转的详细介绍
http://bbs.cirmall.com/thread-52338-1-1.html
(出处: 电路城)



鲜花

握手

雷人

路过

鸡蛋

QQ|Archiver|手机版|小黑屋|深圳市光明谷科技有限公司|Sunshine Silicon Corpporation ( 粤ICP备14060730号

GMT+8, 2021-7-29 00:17 , Processed in 0.130715 second(s), 25 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

返回顶部