欢迎来到天天文库
浏览记录
ID:39469074
大小:62.00 KB
页数:10页
时间:2019-07-04
《UCOS 时间片轮转调度算法详解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、UCOS时间片轮转调度算法详解2009年8月4日1.UCOS一种只支持优先级抢占型调度的操作系统。它不支持同一个优先级有2个及以上的任务同时运作。我修改的UCOS支持不同优先级调度的同时,支持同一个优先级有2个以上的任务以时间片轮转方式进行调度。这个就是UCOS和我修改的UCOS的区别。我修改后的UCOS,在以后的文段中就称为“FIFO-UCOS”。FIFO就是先进先出的意思,和时间片轮转调度差不多的意思。一.FIFO-UCOS--核心思想 UCOS在调度的时候,会按照优先级选择进程进行调度,我做的部分就仅仅是在他进行优先级检查之前,把和运行态同等级的进
2、程进行了替换,替换成了时间片轮转调度的下一个进程! 二.TCB的修改 FIFO-UCOS和UCOS并不能完全兼容,最大的改变,就是对TCB的结构做了改动,加入了我自己的段。 该部分代码在UCOS-II.H文件中: typedefstructos_tcb{ OS_STK*OSTCBStkPtr;/*当前任务堆栈栈顶指针*/ #ifOS_TASK_CREATE_EXT_EN>0 void*OSTCBExtPtr;/*指向用户定义的任务控制块扩展*/ OS_STK*OSTCBStkBottom;/*指向任务堆栈栈底指针*/ INT32UOS
3、TCBStkSize;/*存有栈中可容纳的指针元数目而不是用字节(Byte)表示的栈容量总数。*/ INT16UOSTCBOpt;/*TaskoptionsaspassedbyOSTaskCreateExt()*/ INT16UOSTCBId;/*TaskID(0..65535)存储任务的识别码ID,备用*/ #endif structos_tcb*OSTCBNext;/*指向后一个任务控制块的指针*/ structos_tcb*OSTCBPrev;/*指向前一个任务控制块的指针*/ #if((OS_Q_EN>0)&&(OS_M
4、AX_QS>0))
5、
6、(OS_MBOX_EN>0)
7、
8、(OS_SEM_EN>0)
9、
10、(OS_MUTEX_EN>0)/*OS_EVENT_EN 定义为:能使队列代码产生&&申请队列控制块最大数不为零
11、
12、能使邮箱代码产生
13、
14、 能使信号量代码产生
15、
16、能使互斥量代码产生 */ OS_EVENT*OSTCBEventPtr;/*指向事件控制块的指针*/ #endif #if((OS_Q_EN>0)&&(OS_MAX_QS>0))
17、
18、(OS_MBOX_EN>0) void*OSTCBMsg;/*MessagereceivedfromOSMboxPost
19、()orOSQPost()指向传递给任务的消息的指针*/ #endif #if(OS_VERSION>=251)&&(OS_FLAG_EN>0)&&(OS_MAX_FLAGS>0) #ifOS_TASK_DEL_EN>0/*OS版本大于等于251&&能使事件标志代码产生&&最大标志数大于零*/ OS_FLAG_NODE*OSTCBFlagNode;/*指针指向事件标志节点*/ #endif OS_FLAGSOSTCBFlagsRdy;/*Eventflagsthatmadetaskreadytorun事件标志使任务准备运行*/ #en
20、dif INT16UOSTCBDly;/*任务等待的时限*/ INT8UOSTCBStat;/*任务的当前状态标志*/ INT8UOSTCBPrio;/*任务优先级(0==highest,63==lowest)*/ /*以下四行语句用于快速访问就绪表的数据*/ INT8UOSTCBX;/*Bitpositioningroupcorrespondingtotaskpriority(0..7)*/ INT8UOSTCBY;/*Indexintoreadytablecorrespondingtotaskpriority*/ INT8UOST
21、CBBitX;/*Bitmasktoaccessbitpositioninreadytable*/ INT8UOSTCBBitY;/*Bitmasktoaccessbitpositioninreadygroup*/ #ifOS_TASK_DEL_EN>0 BOOLEANOSTCBDelReq;/*Indicateswhetherataskneedstodeleteitself*/ #endif/***********************************************************************以下代码是
22、我自己加的:***************************
此文档下载收益归作者所有