首页|嵌入式系统|显示技术|模拟IC/电源|元件与制造|其他IC/制程|消费类电子|无线/通信|汽车电子|工业控制|医疗电子|测试测量
首页 > 分享下载 > 常用文档 > uCOS-II任务栈处理的一种改进方法

uCOS-II任务栈处理的一种改进方法

资料介绍
嵌入式系统论文

uC/OS-II任务栈处理的一种改进方法
摘要:在μC/OS-
II内核中,各个不同的任务使用独立的堆栈空间,堆栈的大小按每个任务所需要的最大
堆栈深度来定义,这种方法可能会造成堆栈空间浪费。本文叙述如何在RTOS中多个任务
共用连续存储空间作为任务栈的方法,并详细比较二者的优缺点和适用性。
    关键词:μC/OS-II 任务堆栈 RTOS 共用空间堆栈
关于μC/OS-
II这个实时内核及其应用已经有很多文章介绍了,对于学习RTOS的人来说,这个系统是
很好的学习起点。虽然文献[1]的源代码没有行号和函数名交叉索引表等,给源代码阅读
造成一些困难(可使用BC31的grep查找功能,提高阅读效率),好在代码不是很长,前
面又有详细的中文说明,对于有一定X86汇编和C语言基础的人来说,仍然可以在不长的
时间内掌握。
μC/OS-
II内核是一个抢先式内核,可以进行任务间切换,也可以让一个任务在得不到某个资源
时休眠一定时间后再继续运行;提供了用于共享资源管理的信号灯,用于进程通信的消
息队列和邮箱,甚至提供了存储器管理机制,一个比较全面的系统。
μC/OS-
II内核有些地方仍然值得改进,比如该系统不支持时间片调度。如果有一个任务中一段
死循环代码(或者条件循环代码),代码就会永远(或长时间)在此处执行,调度程序
无法控制,其它任务也就是不到及时执行。这种抢先式实际上和非抢先式系统存在着同
样问题。当然,如果这种代码不一个BUG,问题是可以解决的,在不提供时间片调度的抢
先式系统中,一般采取信号灯,或者任务主动休眠的方法(对于μC/OS-
II,很容易改造成支持时间片调度,只要在定时中断服务程序调用OSIntCtxSw()函数即
可);非抢先式系统一般采取有限状态机方法,不使用这种耗时很长的循环代码。不过
,无论如何,对RTOS的使用者来说,这毕
uCOS-II任务栈处理的一种改进方法
本地下载

评论