没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
μC/OS-II就绪表算法在就绪表算法在ARM架构上的改动架构上的改动
μC/OSII任务就绪表的设置、清除、查找算法,是高效、跨平台的;但是向ARM新架构移植时,没有把ARM的
性能完全发挥出来。将就绪表操作算法用汇编指令改写,有助于提高效率,节省存储空间,并扩展μC/OSII支持的
最大任务数。
引言
μC/OSII的就绪表设置、清除、查找算法,是高效的、跨平台的程序。它使用了两个查找数组OSMapTbl[8]和
OSUnMapTbl[256],以提高查找就绪表的速度,尽快获取就绪任务的最高优先级。
CortexM3是ARM公司较新的一种架构版本,主要应用在单片机领域。基于它生产的32位芯片日益增多;CortexM3只支持
Thumb2指令集,在效能和代码密度间能取得更佳的表现。
1在ARM上改动算法的因由利弊
由于就绪表操作是在关中断状态下运行的,其执行影响到系统的中断响应时间,因此就绪表操作算法的效率是衡量实时操作系
统优劣的基准之一。
在CortexM3所用的指令集中,一些指令功能不可小觑,如前导零计数clz、字内位反转rbit、位清除bic。其中的clz和bic为
μC/OS就绪表的高优先级获取算法指出了另一条道路。
(1) 改动后的优势
① 节省存储空间。不再使用查找数组OSMapTbl[8]和OSUnMapTbl[256]。设立这两个数组的目的,是为了提高查找就绪表的
效率。
② 提升查找效率。clz是单周期指令,使用带移位的加法指令,大幅缩短运算时间。
③ 增加了μC/OSII支持的任务数量,从64提升到了1 024(2.84版支持的任务数量已经到了256,不过效率有所下降)。
(2) 存在的不足
① Realview MDK(这里使用的是3.20版及其指令模拟器)尚不支持在C语言程序中使用Thumb2指令内联汇编。使用内嵌汇
编函数时,函数的调用(跳转返回)降低了执行效率。
② C语言对clz指令的支持尚有不足,故新算法跨平台性差。但鉴于ARM芯片应用广泛,指令又被ARM9之后的芯片广泛兼
容,所以应用空间还算广阔。
2μC/OSII就绪表算法介绍与具体改动
μC/OSII就绪表是一个数组,数组元素一位的值(1或0)对应了一个任务就绪与否,该位在数组中的位置表示任务的优先级。
当需要调度已就绪的最高优先级任务运行时,就在就绪表中查找该任务。
2.1μC/OSII就绪表算法简介
一种解决方法是,对数组各项依次判断是否为0:若>0,进入该项查找最小权的置1位位置;若=0,优先级加一个基数,查下一
项,直至查到该优先级。
μC/OSII技高一筹,设置了一个对就绪表各项判断是否为0的变量,称之为就绪表组。就绪表组一位为0或1,对应就绪表一项
的值是否为0。通过查找就绪表组最小权位的置1位位置,就确定了对应首个>0的就绪表项的下标,从而避免了循环,大幅度
提高了效率。
2.2改动方式与源码
clz算法接受了μC/OSII的思路,再通过使用clz指令来进行优化。不同的是,clz是从右往左查,二进制的高权位对应高优先
级,而μC/OSII优先级以值小为高。
考虑到有时用不到很多任务,这时用数组作就绪表不免浪费。因此当任务总数小于32时,就用32位无符号整数变量作就绪
表。注意,此时就绪表组变量OSRdyGrp被当作就绪表使用。
常量OS_LES_TSK表示是否使用较小任务数,0表示使用最多32个任务,1表示使用最多1 024个任务。
常量RdySt是将32位整数的最高权位置1,以便移位使用。
2.3C语言实现
以下算法利用内嵌clz指令的函数编写,实现了指定优先级任务在就绪表的设置、清除,在就绪表中查找就绪任务的最高优先
级。
#defineOS_LES_TSK 0
资源评论
weixin_38608379
- 粉丝: 7
- 资源: 918
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 通过go语言实现单例模式(Singleton Pattern).rar
- 通过python实现简单贪心算法示例.rar
- C语言中指针基本概念及应用详解
- (源码)基于Websocket和C++的咖啡机器人手臂控制系统.zip
- (源码)基于深度学习和LoRA技术的图书问答系统.zip
- (源码)基于Servlet和Vue的机动车车辆车库管理系统.zip
- (源码)基于ESP32C3和WiFi的LED控制系统.zip
- (源码)基于Spring Boot和Quartz的定时任务管理系统.zip
- (源码)基于jnetpcap框架的网络流量监控系统.zip
- (源码)基于Spring Boot和WebSocket的FTP部署管理系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功