μCOS-II允许各个任务的栈容量可变的优点

zhujinqiang 2012-11-28 09:38:21
μCOS-II允许各个任务的栈容量是可变的
不像某些商用内核要求所有任务栈容量大小一致.

貌似优点是可以节省RAM...
...全文
119 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lr2131 2012-12-04
  • 打赏
  • 举报
回复
我个人的想法是:1.因为malloc的功能做成了可裁剪的,如果裁减掉的话,ucos2就不能内建栈 ,所以就不管有没有裁剪malloc,都让用户自己建立栈空间了。 2.UCOS2提供的malloc,如果用的时候开得大了浪费或小了不能用总之不好使,或是不利于整 个的内存管理,所以还是不如让用户自己建立栈空间。
zhujinqiang 2012-12-01
  • 打赏
  • 举报
回复
引用 3 楼 lr2131 的回复:
关于用户任务的栈开辟问题,ucos2自己有malloc,为什么不自己在创建任务时,自己内建栈呢,用户只需要指定大小就行了啊,传入大小这个参数,这个一样也能达到用户调节任务栈容量的功能,而且由于是OS内建的,用户访问不到的话,也会安全可靠一些的。此外,windows和linux上创建线程时不也是只需要指定栈大小的吗,也没见用户来自己创建栈空间吧。不明白UCOS2为什么要用户……
同样不明白,等高手解答
lr2131 2012-11-30
  • 打赏
  • 举报
回复
关于用户任务的栈开辟问题,ucos2自己有malloc,为什么不自己在创建任务时,自己内建栈呢,用户只需要指定大小就行了啊,传入大小这个参数,这个一样也能达到用户调节任务栈容量的功能,而且由于是OS内建的,用户访问不到的话,也会安全可靠一些的。此外,windows和linux上创建线程时不也是只需要指定栈大小的吗,也没见用户来自己创建栈空间吧。不明白UCOS2为什么要用户自己创建栈空间。
zhujinqiang 2012-11-30
  • 打赏
  • 举报
回复
引用 1 楼 lr2131 的回复:
是的,μCOS-II允许各个任务的栈容量是可变的,在创建任务时,指定了栈首地址,栈空间的开辟是用户自己采用静态变量的方式建立的。μCOS-II会记录到对应任务的栈地址指针变量中。在任务运行时用压栈和出栈时就会用到用户开辟的这个区域。但是这个“貌似优点是可以节省RAM...”应该对于会用的人来说吧。如果开小了,就会出现问题了吧。对于用UCOS2的新手,一般还是建议稍开大点。……
当然啦 栈的大小是看任务需要啦。
lr2131 2012-11-28
  • 打赏
  • 举报
回复
是的,μCOS-II允许各个任务的栈容量是可变的,在创建任务时,指定了栈首地址,栈空间的开辟是用户自己采用静态变量的方式建立的。μCOS-II会记录到对应任务的栈地址指针变量中。在任务运行时用压栈和出栈时就会用到用户开辟的这个区域。但是这个“貌似优点是可以节省RAM...”应该对于会用的人来说吧。如果开小了,就会出现问题了吧。对于用UCOS2的新手,一般还是建议稍开大点。好像UCOS2也提供相关栈容量溢出的检查,没用过不敢多说。

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧