3907|5

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

如何解决业务扩展和系统内存不足的矛盾 [复制链接]

问题背景:
客户对产品提的需求成爆炸性增长,不同的客户有不同的需求,最后就是产品业务模块越来越多,系统内存越用越多,目前
系统的内存已经扩展到每cpu 4G内存还是有业务在设计实现时需要受到内存空间的制约。系统为vxwork 多核平台。

解决方法:
采取动态加载业务内存来实现业务内存按需分配。利用license控制,开启对应的license的业务需要去内存管理模块进行注册,内存管理模块根据其请求的业务规格,按需要为其分配所需要的内存(实际稍多一点,用于模块内存越界保护)。
系统在运行时,使能license 则为其分配内存,不使能业务对应的license则释放其所需要的内存,且系统不需要重新启动,要做到这一点当然是很好的解决之道。
本人有如下困惑:
1、这种动态模块内存加载应该需要系统底层的支撑:模块的代码段、数据段、堆栈段的管理,实现难度有多大?
2、内存释放后,如果想要被其他模块重复再此使用的话,肯定会有系统内存碎片,这些内存碎片如何整理实现难度未知?

欢迎各位内存管理方面的专家给予指教!!

最新回复

原来如此,兄弟没参加过类似的培训,平时也很少遇到类似的问题,多谢哈。  详情 回复 发表于 2010-5-4 15:23
点赞 关注

回复
举报

81

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
1. 没有那么复杂,用loadLib中的库函数loadModule()等函数以及unldLib中的卸载函数就可以了,或者直接用ld、unld命令也可以。系统会管好底层的,你只要调用这些函数就可以了。
2. 动态分配的时候,内存碎片的问题,只能是设计的时候尽量考虑避免。比如可以考虑对一些特别频繁加载卸载的模块,专门分配到一个特定的用户内存分区中,这样可以让碎片只集中在这个内存分区中。还有加载及分配之前,先全部释放及卸载完后,再去加载及分配内存,尽量让分配内存的时候留下的是连续的内存。
还有可以考虑的是,能否不要纯动态分配,而是根据业务估计的分成几类需要的内存大小,用静态分配方式,只要保证使用的静态内存大小是够本次业务使用的就行。这样虽然会有内存的一些浪费,但可以保证不会产生内存碎片。这样使用的话,肯定不如动态分配内存方便,需要好好规划一下。
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
专门分配到一个特定的用户内存分区中

怎么做?以前没接触过这种做法。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
有内存分区的接口函数库,看memPartLib库的帮助就知道了。还有tornado trainning workshop的内存一章也有专门的说明的啊,如果参加过vxworks培训的应该都知道的,这个应该是要讲的
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
没有遇到过
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 4 楼 frank_zhou 的回复:
有内存分区的接口函数库,看memPartLib库的帮助就知道了。还有tornado trainning workshop的内存一章也有专门的说明的啊,如果参加过vxworks培训的应该都知道的,这个应该是要讲的


原来如此,兄弟没参加过类似的培训,平时也很少遇到类似的问题,多谢哈。
 
 
 

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

随便看看
查找数据手册?

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