ucos-iii学习之抢占式调度以及调度点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34401994/article/details/78078305

1.抢占式调度
调度器决定了任务的运行顺序。
uC/OS-III 通过两种方法处理中断提交的事件:直接提交或延迟提交。
这两种方法产生的结果是一样的:最高优先级就绪任务会占用CPU。
(1)直接提交
低优先中断在执行时遇到高优先级中断,直接暂停执行高优先级。
(2)延迟提交
低优先中断在执行时遇到高优先级中断,先执行完低优先级再执行高优先级。
2.调度点
(1)任务被标记或发送消息给另一个任务时会发生调度
任务调用提交服务函数 OS???Post(),发送信号量或消息给其它任务时调度发生。调度在 OS???Post()函数的结束时发生。
(2)任务调用 OSTimeDly()或 OSTimeDlyHMSM()
(3)任务所等待的事件发生或超时
(4)任务取消挂起
(5)新任务被创建
(6)任务被删除
(7)内核对象被删除
(8)任务改变自身的优先级或其它任务的优先级
(9)当任务通过调用 OSTaskSuspend()停止自身
(10)任务调用 OSTaskResume()恢复其它停止了的任务
(11)退出中断服务程序
(12)通过调用 OSSchedUnlock()调度器被解锁
(13)调用 OSSchedRoundRobinYield()任务放弃了分配给它的时间片
(14)用户调用 OSSched()

猜你喜欢

转载自blog.csdn.net/qq_34401994/article/details/78078305