6687|4

5

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

新手请教ucosii内存管理问题,希望高手给指导下,谢谢 [复制链接]

 小弟正在学习ucosii,现在需要利用ucosII中内存管理来实现动态分配内存,我看到邵贝贝书中讲到一个内存分配的例子:
OS_MEM *CommTxBuf;
INT8U CommTxPart[100][32];
CommTxBuf=OSMemCreate(CommTxPart,100,32,&err);
我有些疑问:假设CommTxPart中要分配的内存块,我不知道要分配对多个块,怎们办?
例如:有个服务器,有多个客户端连接到这个服务器上,我不可能知道,只有客户端连上服务器,我才能指导客户端的大小。等等
若直接定义CommTxPart[100][32],在程序中就能直接用了,为何还要申请动态内存管理?

最新回复

嵌入式实用资源有限,怎能不关心客户端数量。嵌入式TCP协议栈在配置时就要求填最大TCP连接数与最大UDP连接数了。 当所有客户端要求服务器提供相同的服务时可以只写一份服务任务代码,当一个TCP连接请求被接收时,建立服务任务并传递TCP端口号给服务任务代码以提供服务(也可以识情况用结构指针来包含更多信息)。TCP连接建立时分配空间,断开时释放内存空间。栈空间分配就可以用内存管理实现。  详情 回复 发表于 2012-11-1 22:24

点评

ucos2的内存管理只能分配固定大小的内存。实际上它是用一个单向链表管理内存收发。 自己定义数组需自己管理链的插入和删除并保证线程安全。已经有很棒的车轮了,为什么还要自己造一个车轮呢?  详情 回复 发表于 2012-11-1 09:04
点赞 关注
 

回复
举报

50

帖子

0

TA的资源

一粒金砂(高级)

沙发
 

回复 楼主 hlg5141979 的帖子

ucos2的内存管理只能分配固定大小的内存。实际上它是用一个单向链表管理内存收发。
自己定义数组需自己管理链的插入和删除并保证线程安全。已经有很棒的车轮了,为什么还要自己造一个车轮呢?
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
在有限的内存空间内分配固定大小的内存,大多数情况下不使用的下,不是浪费空间吗?
我想知道了,在分配固定大小的内存空间里,没有使用的情况下,操作系统只是定义了大小的内存空间,只有使用才能分配。
假设:我申请了10个内存块,每块32字节。若只有用了8个,剩余没有用到,是不是在内存分配时,只分配了8个,只有用到才会分配
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

4
 
自己定义的链表是要手动删除和插入,但是也是在使用到时候才会动态分配;
假设:比如TCP连接中的客户端,我只有在连接时才会申请一个客户端连接信息,不必关心客户端的数目;
要采用内存管理,我首先要申请固定大小的内存了,一般在C/S模式通信下,客户端的数目是比较大,此时申请固定空间不是很大吗
 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(高级)

5
 
嵌入式实用资源有限,怎能不关心客户端数量。嵌入式TCP协议栈在配置时就要求填最大TCP连接数与最大UDP连接数了。
当所有客户端要求服务器提供相同的服务时可以只写一份服务任务代码,当一个TCP连接请求被接收时,建立服务任务并传递TCP端口号给服务任务代码以提供服务(也可以识情况用结构指针来包含更多信息)。TCP连接建立时分配空间,断开时释放内存空间。栈空间分配就可以用内存管理实现。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表