UCOSii的任务切换

任务的切换主要发生在以下几种情况:

中断产生:当程序产生中断后,CPU处理中断服务函数,但当CPU中断处理完成后并不一定返回到被中断的任务中,而是执行任务就绪表查询,当有更高优先级的任务就绪时会先切换到高优先级任务运行。

主动让出使用权:当高优先级的任务调用延时函数后,会主动让出CPU使用权,该任务会被挂起,重新从任务就绪表中查找最高优先级任务执行。

更高优先级就绪:比如一个低优先级的任务,在运行过程中,虽然没有使用延时等让出CPU使用权,但是由于ucosii 每个固定的周期(心跳时间)会执行一次任务就绪表查询,当有高优先级的任务就绪了以后,那么这个低优先级的任务就被打断了,从而切换到高优先级任务运行。
这就等于剥夺了低优先级任务的CPU使用权了。

任务自挂起:将自己从就绪表中删除,引发一次任务调度,使得CPU去运行就绪表中的其他任务。

1.当任务处于中断服务处理中或者临界区内不会发生任务切换

2.如何保证系统的实时性

在中断服务函数中,因为滴答中断周期性发生的,所以任务切换也是周期性发生的。

当有一个优先级低的任务执行时,如果有优先级更高的任务就绪了,那么只要发生了一次滴答中断,任务就能被立即切换过去,延时只有一个滴答时钟的时间,如果定义的时钟周期是1ms,那么低优先级的任务最多也就能运行1ms,然后便会强行剥夺CPU的执行权限,转交给高优先级的任务。

由于存在这种机制,因此便能保证UCOSII系统任务的实时性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值