下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 一种C/OS-II任务调度硬件指令的实现C/OS-II 是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息 队列)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。1 COS-II的任务调度算法分析1.1 COS-II任务就绪表的解读COS操作系统采用优先级至上的任务调度原则,让 C/OS-II 是一种基于优先级的抢占式多任务实时操作系统,
2、包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息 队列)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。1 COS-II的任务调度算法分析1.1 COS-II任务就绪表的解读COS操作系统采用优先级至上的任务调度原则,让进入就绪态任务中优先级最高的那个任务,一进入就绪态就能立即运行。COS操作系统实现了一种巧妙的查表算法,利用这种算法能快速实现任务调度原则。如何从任务就绪表中,查找优先级最高的那个任务?归结起来:两个变量(OSrdyGrp、OSRdyTb1)和两张表(OSM
3、apTb1、OSUnMaTb1)。COS操作系统可支持64个任务,每个任务被赋予不同的优先级从0级到最低优先级OS_LOWEST_PRIO,最末两个为操作系统所用,分别为统计任务和空闲任务的优先级。COS-II任务就绪表如图1所示。判断任务就绪同样根据OSRdyTb1和OSRdyGrp两个变量来完成:OSR-dyTb1按任务优先级分成8组(即每一组8个任务优先级),当任务处于就绪状态时,对应的位为1,反之则为0;OSRdyTb1口组中任何一位为1时,对应的OSRdyGrp位置1。图1 COS-II任务就绪表使任务进入就绪状态和脱离就绪状态,都是通过OSRdyTb1和OSRdyGrp这两个变量来
4、查找OSMapTb1表完成的:进入就绪状态。任务优先级的低3位用于确定任务在总就绪表OSRdyTb1中的位置。紧接着前面的3位用于确定是OSRclyTb1数组的第几个元素,两个变量都置1。脱离就绪状态。代码将就绪任务表数组OSRdyTb1中相应元素的相应位清0,而只有当这一组中的所有任务都为脱离就绪态时,OSRdyGrp变量才会为0。1.2 高优先级任务的查找从任务就绪表中查找最高优先级任务,即从OSRdyTb1变量中找到最低为1的位是第几位(对应的就是最高优先级任务)。COS-II采用查表的方式来找出处于就绪态的最高优先级任务,COS-II中有一张256个单元的数据表OSUnMapTb1,表
5、中按一定规律有128个O,64个1,32个2,16个3,8个4,4个5,2个6,1个7,还有1个0,共256字节。OSUnMapTb1的定义如下所示:找出进入就绪态的最高优先级任务的代码如下:初看这张表感觉杂乱无章,实际是很有规律的。以“OSUnMapTb10OSUnMapTb115:0,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,*0x000x0F*”为例说明:其他依次类推。下面再以一个实例进行说明:假设变量OSRdyGrp=01011000B,表示变量OSRdyTb13、OSRdyTb14、OSRdyTb16有任务处于就绪状态,任务调度是去查找最高优先级任务(y=OSUnM
6、apTb10x58)。由于OSRdyTb13>OSRdyTb14>OSRdyTb16,结果y=3。如果OSRdyTb13=1000 0001B,则通过查表x=OS-UnMapTb1OSRdyTb13,即可得到x=O,表明这组数中第0位为1处于最优状态。这样,prio=(y3)+x=(33)+0=24。再利用这个优先级的值,查找任务控制块优先级表OSTCBPrioTb1,得到指向任务的任务控制块OS_TCB。2 Cortex-M3中COS-II任务调度的硬件实现Cortex-M3采用精简指令集,采用Thumb-2指令,其中包括基于RTOS的硬件算法指令(CLZ),可以通过这种指令查找
7、处于就绪态的最高优先级任务。COS-II中任务的就绪态是反映在OSRdyTb1变量中,共计8字节(64位),对应64个任务。可以将其折分成两个32位的数据,然后分别查找这两个32位的数据中优先级最高的任务。先查找低32位,如果低32位中不为零,则找出其中最高优先级任务;否则查找高32位,找出其中最高优先级任务,高32位的的查找结果应加上数值32。Cotrex-M3中通过以下两条指令就可完成最高优先级任务的定位:RBIT和CLZ。RBIT的含义是把一个32位数据水平旋转180°;CLZ的含义是计算前导零的个数。COS-II中的任务调度是通过查两次表完成最高优先级任务的查找,方法如下:上述代码在MDK4.12软件中测试,系统时钟采用8 MHz,按照此方法进行任务调度可节省0.5s,同时还减少了用来存放OSUnMapTb1的256字节的空间,缩短了代码运行时间,提高了CPU的利用率。此方法在COS-II的任务通信中也同样适用。在此不再赘述。结语本文主要对COS-II中的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年高中历史第二单元凡尔赛-华盛顿体系下的短暂和平第7课华盛顿体系的建立教学教案岳麓版选修3
- 玉溪师范学院《行政法学》2021-2022学年期末试卷
- 2024工艺品加盟合同书范本
- 2024年手持云台合作协议书
- 盐城师范学院《照明设计》2022-2023学年第一学期期末试卷
- 盐城师范学院《通信原理》2021-2022学年第一学期期末试卷
- 2024瓷砖购销合同
- 2024年油气储层保护剂项目合作计划书
- 2024年提供住宿社会救助服务合作协议书
- 沪教版三年级下册数学第二单元 用两位数乘除 测试卷附参考答案ab卷
- 我国的宗教政策(共37张)
- 动漫制作专业职业生涯规划书
- 2023年国家公务员考试申论试题(行政执法卷)及参考答案
- 殡葬专业职业生涯规划与管理
- QGDW11957.2-2020国家电网有限公司电力建设安全工作规程 第2部分:线路
- 中国抗日战争史智慧树知到课后章节答案2023年下浙江大学
- 轨道工程(第三版) 课件 高亮第6章 道岔
- 深圳市建设工程消防设计疑难解析(2023年)
- 特仑苏广告效果调查报告
- 机动车检测站事故隐患排查治理体系作业指导书
- 食材配送投标方案(技术方案)
评论
0/150
提交评论