簡體   English   中英

Windows限制中的共享內存(C ++)

[英]shared memory in windows limits (c++)

目前,我正在為每個進程的內存限制制定解決方案。 所以我來到了共享記憶。 首先,我將Windows 7與Visual Studio用作開發人員平台,該軟件將在具有多個CPU和巨大內存的現代Windows服務器系統上運行。

好吧,我告知自己每個進程的內存限制,並且我需要訪問更多的內存。 所以我的想法是創建多個進程並使用共享內存。

但是創建很多共享內存真的很好嗎? 那性能呢?

好吧,我告知自己每個進程的內存限制,並且我需要訪問更多的內存。 所以我的想法是創建多個進程並使用共享內存。

每個進程對內存的限制是針對虛擬內存的 這基本上意味着您的地址空間具有最大大小(例如,在具有32位指針的系統上為4 GB)。 由於共享內存是內存到地址空間的映射,因此沒有任何辦法可以使您擺脫困境。

請記住,如果將內存塊分配到多個進程中,最終將達到物理內存的極限,然后系統性能將下降。

如果您確實需要更多的內存,而不是系統可以分配給您的內存,則需要開始將數據持久保存到磁盤。 內存映射文件可以使您快速在地址空間內外交換內存塊。

@ Aurus,

聽起來您需要滿足的目標是針對特定(盡管描述不足)需求量身定制的定制解決方案。 雖然Stack Overflow對於尋求專業知識和程序示例的開發人員和軟件工程師非常有用,但是其中可用的任何適用高級工程可能都不容易找到,也可能無法提供您所尋求的特定答案。 一個人可能從您的帖子中做出太多假設。

無論利益(S),你可能(也可能不會)從RAM和或在多個處理器上的多個線程數量驚人會達到最好留給那些有經驗的艱苦建設這樣的系統。 我本人在該領域有多年經驗,可以自信地表示自己缺乏這種特定經驗。 老實說,我希望避免這種情況發生,因為高美元的硬件通常會參加高壓計划,而這些計划也會導致其他問題。 我會推測一點點-僅僅是因為它不花錢...

如果您的意圖堅定地利用Windows平台,那么我的一階猜測是:

  • 集群服務器環境(許多用於處理大量線程的多核處理器,並由大量可用RAM提供支持)
  • 尖端驅動器硬件-如果您想最大程度地減少頻繁訪問虛擬內存的影響,則可能需要針對特定​​的尖端硬件選件,這些選件使您能夠用更加雄辯的DRAM棒來替換主軸驅動器,即說固態驅動器-而不是您在現代iPod和移動PDA中常見的普通類型...我指的是真正的交易 -經典固態驅動器[ 這里是一個很好的例子 -在硬件下查看]。 他們的產品比主軸驅動器快兩到三個數量級,甚至比消費者固態產品快得多(盡管不便宜)。

您的目標似乎表明,花費不是什么大問題,但這在我沒有更多具體信息的情況下可以提供給您。

最后一點建議是,在尋求工程師幫助時,最好准確地告訴他們您要實現的目標(目標)。 讓他們提供選擇,使現實和現代技術的局限性適合您的困境和財務目標。 即使有深奧而古怪的要求,通常最好的解決方案實際上是定制的“開箱即用”的工程解決方案,該解決方案的最終構建/實施成本要比蠻力方法便宜得多。 換句話說,請幫助工程師幫助您,同時注意GIGO原則也適用。

我衷心希望我提供的東西有用。 祝好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM