12175|10

72

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

ucos的任务堆栈 [复制链接]

 每个任务都有自己的堆栈,堆栈必须申明为 OS_STK 类型,并且由连续的内存空间组成。可
以静态分配堆栈空间,也可以动态分配堆栈空间。

前半句明白,后半句迷惑。

最新回复

每个任务所占的堆栈大小是不是固定的?  详情 回复 发表于 2015-4-7 13:55
点赞 关注
 

回复
举报

19

帖子

4

TA的资源

一粒金砂(初级)

推荐
 
每个任务都有自己的堆栈空间。堆栈必须声明为OS_STK类型,并且由连续的内存空间组成。用户可以静态分配堆栈空间(在编译的时候分配)也可以动态地分配堆栈空间(在运行的时候分配)。静态堆栈声明如程序清单 L4.4和4.5所示,这两种声明应放置在函数的外面。

程序清单  L4.4 静态堆栈

static OS_STK  MyTaskStack[stack_size];

或  OS_STK  MyTaskStack[stack_size];

用户可以用C编译器提供的malloc()函数来动态地分配堆栈空间,如程序清单 L4.6所示。在动态分配中,用户要时刻注意内存碎片问题。特别是当用户反复地建立和删除任务时,内存堆中可能会出现大量的内存碎片,导致没有足够大的一块连续内存区域可用作任务堆栈,这时malloc()便无法成功地为任务分配堆栈空间。

程序清单 L L4.6   用malloc()为任务分配堆栈空间

OS_STK  *pstk;

pstk = (OS_STK *)malloc(stack_size);

If (pstk != (OS_STK *)0) {            /* 确认malloc()能得到足够地内存空间 */

    Create the task;

}

点评

好的 虽然没怎么看明白,自己还是基础太差了  详情 回复 发表于 2015-3-7 11:44
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
自己顶一下,  谁来分析一下静态与动态
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

4
 
快乐古月 发表于 2015-3-7 10:17
每个任务都有自己的堆栈空间。堆栈必须声明为OS_STK类型,并且由连续的内存空间组成。用户可以静态分配堆栈空间(在编译的时候分配)也可以动态地分配堆栈空间(在运行的时候分配)。静态堆栈声明如程序清单 L4.4和4.5所示,这两种声明应放置在函数的外面。

程序清单  L4.4 静态堆栈

static OS_STK  MyTaskStack[stack_size];

或  OS_STK  MyTaskStack[stack_size];

用户可以用C编译器提供的malloc()函数来动态地分配堆栈空间,如程序清单 L4.6所示。在动态分配中,用户要时刻注意内存碎片问题。特别是当用户反复地建立和删除任务时,内存堆中可能会出现大量的内存碎片,导致没有足够大的一块连续内存区域可用作任务堆栈,这时malloc()便无法成功地为任务分配堆栈空间。

程序清单 L L4.6   用malloc()为任务分配堆栈空间

OS_STK  *pstk;

pstk = (OS_STK *)malloc(stack_size);

If (pstk != (OS_STK *)0) {            /* 确认malloc()能得到足够地内存空间 */

    Create the task;

}

好的 虽然没怎么看明白,自己还是基础太差了


 
 
 

回复

315

帖子

8

TA的资源

一粒金砂(中级)

5
 
希望有更多人都加入进来,我也不懂,但渴望搞懂!顶一下楼主~

点评

恩,大家一起来学习  详情 回复 发表于 2015-3-7 14:51
 
个人签名给生活一个梦想,给奋斗一个方向!---淘宝搜索逸嵌电子工作室
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

6
 
奋斗吧小鱼儿 发表于 2015-3-7 12:36
希望有更多人都加入进来,我也不懂,但渴望搞懂!顶一下楼主~



恩,大家一起来学习
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(中级)

7
 
如果不怎么删除任务的话  理论很少会有内存碎片出来,堆栈的分配还是用malloc()合理点
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

8
 
但是,静态分配时候,如何确定每个任务的栈空间大小呢?

点评

看任务量吧,我也不懂啊,学了这么长时间还没入门  详情 回复 发表于 2015-3-30 11:06
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

9
 
cnldjun 发表于 2015-3-29 16:58
但是,静态分配时候,如何确定每个任务的栈空间大小呢?

看任务量吧,我也不懂啊,学了这么长时间还没入门
 
 
 

回复

27

帖子

0

TA的资源

一粒金砂(初级)

10
 
每个任务所占的堆栈大小是不是固定的?

点评

但是你得分配啊  详情 回复 发表于 2016-12-24 08:41
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

11
 
yyjasen 发表于 2015-4-7 13:55
每个任务所占的堆栈大小是不是固定的?

但是你得分配啊
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表