微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > UC/OS-II内核调度分析

UC/OS-II内核调度分析

时间:05-07 来源:互联网 点击:

表的起始处。当建立一个任务时,这个任务总是被放在这个链表的起始处。换句话说,OSTCBList总是指向最后建立的那个任务。链的终点指向空字符NULL(也就是零)。

因为这两个任务都处在就绪态,在就绪任务表OSRdyTbl[]中的相应位是设为1的。还有,因为这两个任务的相应位是在OSRdyTbl[]的同一行上,即属同一组,故OSRdyGrp中只有1位是设为1的。

μC/OS-Ⅱ还初始化了4个空数据结构缓冲区,如图F3.8所示。每个缓冲区都是单向链表,允许μC/OS-Ⅱ从缓冲区中迅速得到或释放一个缓冲区中的元素。控制块OS_TCB的数目也就自动确定了。当然,包括足够的任务控制块分配给统计任务和空闲任务。

UC/OS-II内核调度分析vxWorks内核调度分析

1.只支持基于优先级的抢占式调度算法,不支持时间片轮训;2.64个优先级,只能创建64个任务,用户只能创建56个任务;3.每个任务优先级都不相同。4.不支持优先级逆转;5.READY队列通过内存映射表实现快速查询。效率非常高;6.支持时钟节拍;7.支持信号量,消息队列,事件控制块,事件标志组,消息邮箱任务通讯机制;8.支持中断嵌套,中断嵌套层数可达255层,中断使用当前任务的堆栈保存上下文;9.每个任务有自己的堆栈,堆栈大小用户自己设定;10.支持动态修改任务优先级;11.任务TCB为静态数组,建立任务只是从中获得一个TCB,不用动态分配,释放内存;12.任务堆栈为用户静态或者动态创建,在任务创建外完成,任务创建本身不进行动态内存分配;13.任务的总个数(OS_MAX_TASKS)由用户决定;14.0优先级最高,63优先级最低;15.有一个优先级最低的空闲任务,在没有用户任务运行的时候运行.1.根据用户指定,动态分配堆栈,可以创建任意多个任务;2.任务的优先级从0——255,0优先级最高,允许多个任务相同优先级;3.支持优先级逆转,TCB保存两个优先级;4.支持抢占与时间片轮训的任务调度方式;5.支持中断嵌套,中断使用专用的堆栈保存上下文;6.队列采用FIFO或者优先级的双向链表实现;7.系统没有空闲任务执行;8.采用工作队列workQword的方式调度;9.任务是基于类,对象的管理方式;10.任务的TCB保存在任务的堆栈里;11.每个任务有自己的堆栈,堆栈大小用户自己设定;12.支持动态修改任务优先级;13.通过编译开关实现对多cpu体系结构的支持。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top