ucos-iii学习之循环轮转调度及调度的内部实现
来源:互联网 发布:卫生巾政治环境知乎 编辑:程序博客网 时间:2024/06/06 01:02
1.循环轮转调度
当多个任务有相同优先级时,uC/OS-III 允许每个任务运行规定的时间片。当任务没有用完分配给它的时间片时,它可以自愿地放弃CPU。
uC/OS-III 允许用户为每个任务设置不同的时间片。当任务被创建时,其时间片长度被设置。也可以在运行时调用 OSTaskTimeQuantaSet()修改。
2.调度的内部实现
OSSched()和 OSIntExit()。
OSSched()在任务级被调用,OSIntExit()在中断级被调用。
调度所需要的两个数据结构:位映像表和就绪列表。
(1)OSSched()
OSSched()通过扫描映像表OSPrioTbl[]找到就绪列表中优先级最高的位,确定好优先级后,索引到 OSRdyList[]并提取该记录中的首个TCB(OSRdyList[highest priority].HeadPtr)。
调度和上下文切换是运行在关中断的状态下的。
(2)OSIntExit()
中断级调度器代码。
(3)OS_SchedRoundRobin()
一任务的时间片期满,负责运行同优先级就绪的任务。
这个函数被OSTimeTick()或者 OS_IntQTask()调用。
3.总结
uC/OS-III 是可抢占的调度器,所以它总是执行优先级最高的就绪任务。
uC/OS-III 运行多个任务具有相同的优先级。这时,它可以被设置为循环轮转调度。
阅读全文
0 0
- ucos-iii学习之循环轮转调度及调度的内部实现
- ucos-iii学习之锁住调度器
- ucos-iii学习之抢占式调度以及调度点
- 嵌入式系统学习——STM32之UCOS-III任务基础API、时间片轮转调度和系统任务
- JOS 轮转调度实现
- ucos-iii学习之内部任务管理
- ucos-iii学习之系统内部任务
- uCOS-II内核学习之任务调度
- 操作系统之轮转法调度
- ucos的任务调度
- ucos的任务调度
- ucos-iii学习之ucos-iii的特性
- UCOS 时间片轮转调度算法详解 (1)
- 基于mykernel的时间片轮转调度的实现
- 基于mykernel实现的时间片轮转调度代码分析
- 时间片轮转调度算法的C语言模拟实现
- OS轮转调度算法RR的C++实现
- UCOS之任务调度机制
- hexo 添加百度站长推送
- elasticsearch——Java API的使用
- date.js
- 58 同城 iOS 客户端搜索模块组件化实践
- A Pub/Sub based HTTP communication method in complex network environments
- ucos-iii学习之循环轮转调度及调度的内部实现
- jquery-ul-li实现分页功能
- 数据结构-vector
- 第四周-项目2
- Delphi 用ADO调用oracle的包中的过程,报 列不存在 的错误
- mac双系统用磁盘工具合并windows分区后 开机还会 出现win分区
- html之js字符串处理方法
- eclipse中代码每行多了换行符
- 关于分划那点破事