windows限制中的共享内存(c++)

shared memory in windows limits (c++)

本文关键字:内存 c++ 共享 windows      更新时间:2023-10-16

目前我正在为每个进程的内存限制制定解决方案。所以我开始分享记忆。首先,我使用的是带有visualstudio的windows7作为开发平台,该软件将在具有多个CPU和巨大内存的现代windows服务器系统上运行。

嗯,我告诉自己每个进程的内存限制,我需要访问更多的内存。所以我的想法是创建多个进程并使用共享内存。

但是,创建大量共享内存真的很好吗?那么性能呢?

嗯,我告诉自己每个进程的内存限制,我需要访问更多的内存。所以我的想法是创建多个进程并使用共享内存。

每个进程的内存限制适用于虚拟内存。这基本上意味着您的地址空间有一个最大大小(例如,在具有32位指针的系统上为4GB)。由于共享内存是将内存映射到您的地址空间,因此无法解决您的问题。

请记住,如果您将内存块分布到多个进程中,您最终将达到物理内存的极限,然后系统性能将缓慢下降。

如果您确实需要比系统所能提供的内存更多的内存,则需要开始将数据持久化到磁盘。内存映射文件可以让您在地址空间中快速交换内存块。

@Aurus,

听起来,你需要的是一个定制的解决方案来满足特定的(尽管描述不足)需求。虽然Stack Overflow对于寻求专业清晰度和编程示例的开发人员和软件工程师非常有用,但其中提供的任何适用的高级工程都可能不容易找到,也可能无法提供您所寻求的具体答案。人们可能会从你的帖子中做出太多的假设。

无论您从惊人的RAM数量和/或多个处理器上的多个线程中获得什么好处,最好留给那些有构建此类系统经验的人。我自己在这个领域有多年的经验,可以自信地表达我自己缺乏这种特定的经验。老实说,我希望避免这种可能性,因为高成本的硬件通常会导致高压力的日程安排,这也会导致其他问题。不过,我会稍微推测一下——哪怕只是因为它不花你任何钱。。。

如果你的意图是坚定地利用Windows平台,我的一阶猜测是:

  • 集群服务器环境(许多用于处理大量线程的多核处理器,由大量可用RAM支持)
  • 尖端驱动器硬件——如果你想最大限度地减少频繁虚拟内存访问的影响,你可能需要针对特定的尖端硬件选项,使你能够用更出色的DRAM棒来真正取代主轴驱动器,也就是说固态驱动器——而不是现代iPod和移动PDA中常见的琐碎类型。。。我指的是真正的交易——经典固态驱动器这里有一个很好的例子——查看硬件]。他们的产品比主轴驱动器快两到三个数量级,甚至比消费者固态硬盘快得多(尽管不便宜)

你的目标似乎表明成本不是一个很大的问题,但这是我能给你的最好的,同时缺乏更具体的信息。

最后一点建议是,当向工程师寻求帮助时,最好准确地告诉他们你想要实现什么(目标)。允许他们提供选择,并将现实和现代技术的局限性与您的困境以及财务目标相匹配。通常情况下,即使有深奥而古怪的需求,最好的解决方案实际上是一个定制的"开箱即用"工程解决方案,它的构建/实现成本也远低于暴力方法。换句话说,帮助工程师帮助您,同时注意GIGO原则也适用。

我真诚地希望我提供的东西有用。祝你好运