首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通讯。内核提供的基本服务是任务切换。之所以使用实时内核可以大大简化应用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。内核本身也增加了应用程序的额外负荷,代码空间增加ROM的用量,内核本身的数据结构增加了RAM的用量。但更主要的是,每个任务要有自己的栈空间,这一块吃起内存来是相当厉害的。内核本身对CPU的占用时间一般在2到5个百分点之间。
   
    UC/OS-II有一个精巧的内核调度算法,实时内核精小,执行效率高,算法巧妙,代码空间很少。
   
    二。UC/OS-II内核调度特点:
   
    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.有一个优先级最低的空闲任务,在没有用户任务运行的时候运行。
返回列表