首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么设计一个多进程并行的统一内存管理器

2012-02-17 
如何设计一个多进程并行的统一内存管理器?比如我有多个进程并行,但我想动态内存统一管理,比如我有一个内存

如何设计一个多进程并行的统一内存管理器?
比如我有多个进程并行,但我想动态内存统一管理,比如我有一个内存池,进程A也能从这个池中获取动态内存,进程B也可以。

这样动态内存统一管理,而不是在每个进程中单独设计内存结构进行申请和释放。这样能提高运行效率和空间利用率。

不知道有没有人想过可以实现的解决方案?

其实我的目的是为了在程序中不用malloc后必需free,而是只管malloc,然后在某个点统一free,类似于手动gc功能。但这样必需每个进程起动的时候要进行

初始化并且对于经常使用malloc的程序来讲效率比较低,所以我想使用内存池,但有多个进程并发的话每个进程设计一个内存池就不太合理了。所以想搞个

内存集中管理,这样就能提高效率而且便于管理。

希望这里的大虾提供点思路或者替代的方案。谢谢。

[解决办法]
我认为这样是做不到的。
进程之间的内存虽然有共享内存一说,但并不能像内存池那样操作,是受到很多限制的。
所以,我认为你这样的设想根本不可能实现!
[解决办法]

引用楼主 THEBEST 的帖子:
比如我有多个进程并行,但我想动态内存统一管理,比如我有一个内存池,进程A也能从这个池中获取动态内存,进程B也可以。

这样动态内存统一管理,而不是在每个进程中单独设计内存结构进行申请和释放。这样能提高运行效率和空间利用率。


[解决办法]
我觉得可能楼主,难办啊!!!!!!!!!!!!!

首先吧,你得单开一个进程来进行内存管理吧……那么剩下的问题就退化成为进程间通信了……

外部进程向该进程通知划一块内存给它……然后该进程要监视外部进程对该缓存的利用,像.net那样建立对像索引……监视某对像什么时候从进程堆栈弹出,表示不再使用,从而可以重新划分这块内存给新的申请者……

那么……外部进程对堆空间的读写全部要通过该进程的话……你觉得这样是方便了,还是更麻烦了?
[解决办法]
同一个进程内的线程一般采用内存池来管理
不同进程的虚拟内存都是独立的。这样可以确保其中的进程出现灾难的时候,而不致于导致其他进程也崩溃掉。

而你现在要去打破它。
[解决办法]
进程间内存池存在很多技术问题,不可能存在大而全的解决方案,可以看看boost.interprocess里面的进程间内存分配器的设计方法。


就你的case来说,
引用楼主 THEBEST 的帖子:
动态内存统一管理,而不是在每个进程中单独设计内存结构进行申请和释放。这样能提高运行效率和空间利用率。

但有多个进程并发的话每个进程设计一个内存池就不太合理了

[解决办法]
http://www.bjwtnd.cn/zgc

热点排行