五 .调度

本文介绍了uC/OS-III调度器的工作原理,强调其可抢占性和基于优先级的特性。调度器在事件如信号量提交、消息发送给高优先级任务时,能立即切换到高优先级任务执行。详细讨论了抢占式调度、调度点以及循环轮转调度,并深入解析了任务级调度OSSched()的内部实现。
摘要由CSDN通过智能技术生成

调度的定义:

调度器,决定了任务的运行顺序。uC/OS-III 是一个可抢占的,基于优先级的内核。根据其重要性每个任务都被分配了一个优先级。uC/OS-III 支持多个任务拥有相同的优先级。
“可抢占的”意味当事件发生时,如果事件让高优先级任务被就绪,uC/OS-III 马上将CPU 的控制权交给高优先级任务。因此,当一个任务提交信号量、发送消息给一个高优先级的任务(若该任务被就绪了),当前的任务就会被停止,更高优先级的任务获得CPU 的控制权。类似的,当ISR 提交信号量或发送消息给一更高优先级的任务(若该任务被就绪了),那么中断返回的时候不会返回到原任务,而是高优先级任务。

一  抢占式调度

uC/OS-III 通过两种方法处理中断提交的事件:直接提交或延迟提交。

其实上图就是一个基本的中断控制系统的操作。进程如下
(1)一个低优先级任务正在执行,这时中断发生了。
(2)如果中断使能,指令指针IP 会跳转到中断服务程序。
(3)中断服务程序处理相关的程序,发送信号量或消息给一个高优先级任务。高优先级任务被就绪。
(4)中断服务程序完成操作后,它将CPU 的控制权还给uC/OS-III。
(5)uC/OS-III 执行相应的操作。
(6)因为就绪队列中有一个更重要的任务,uC/OS-III 将不会返回中断前那个低优先级的任务。而是执行高优先级任务。
(7)开始执行高优先级任务
(8)高优先级任务处理完成后,将CPU 的控制权交给uC/OS-III。
(9)uC/OS-III 执行相应的操作。
(10)uC/OS-III 转向执行原先那个低优先级任务。
(11)低优先级任务从被中断处继续执行。
图7-2 显示了当选择延迟提交中断产生的事件的方式时的一些额外步骤。最后的结果是一样的:高优先级任务抢占了低优先级任务。


(1ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值