общая память в пределах Windows (c ++) - PullRequest
1 голос
/ 12 марта 2012

В настоящее время я работаю над решением по ограничению памяти на процесс.Итак, я пришел к общей памяти.Во-первых, я использую Windows 7 с Visual Studio в качестве платформы разработчика, программное обеспечение будет работать на современной системе Windows Server с несколькими процессорами и огромной памятью.

Что ж, я проинформировал себя об ограничениях памяти на процесси мне нужно получить доступ к гораздо большему количеству памяти.Поэтому моя идея заключалась в создании нескольких процессов и использовании разделяемой памяти.

Но действительно ли хорошо создавать много разделяемой памяти?А как насчет производительности?

Ответы [ 2 ]

4 голосов
/ 12 марта 2012

Ну, я проинформировал себя об ограничениях памяти на процесс, и мне нужно получить доступ к гораздо большему количеству памяти.Поэтому моя идея заключалась в создании нескольких процессов и использовании разделяемой памяти.

Ограничения на объем памяти для каждого процесса указаны для виртуальной памяти .В основном это означает, что ваше адресное пространство имеет максимальный размер (например, 4 гигабайта в системе с 32-разрядными указателями).Поскольку разделяемая память - это отображение памяти в ваше адресное пространство, вы никак не сможете избавиться от проблемы, с которой вы столкнулись.

Имейте в виду, что если вы распределите блоки памяти по нескольким процессам, выв конечном итоге достигните пределов физической памяти , и тогда производительность системы снизится до минимума.

Если вам действительно нужно больше памяти, чем может предоставить ваша система, вам нужно начать сохранять свои данныена диск.Файлы, отображенные в память, позволяют быстро менять блоки памяти в адресном пространстве и из него.

2 голосов
/ 14 марта 2012

@ Aurus,

Звучит так, как будто то, что вам нужно для покрытия ваших целей, является разработанным на заказ решением, адаптированным к конкретным (хотя и недостаточно описанным) требованиям.Хотя переполнение стека чрезвычайно полезно для разработчиков и разработчиков программного обеспечения, которым нужна профессиональная ясность и программные примеры, независимо от того, какая применимая высокоуровневая инженерия доступна в нем, может быть нелегко найти и, вероятно, не даст конкретные ответы, которые вы ищете.Из вашего поста можно сделать слишком много предположений.

Какими бы вы ни выиграли (или не могли) получить от ошеломляющего количества ОЗУ или нескольких потоков на нескольких процессорах, лучше всегооставлено для тех, кто имеет большой опыт создания таких систем.Я сам много лет в этой области и могу с уверенностью сказать, что мне самому не хватает этого конкретного опыта.Честно говоря, я надеюсь избежать этой возможности, потому что оборудование с высокими ценами обычно сопровождается графиками высокого давления, что также может привести к другим проблемам.Хотя я немного рассужду - хотя бы потому, что это вам ничего не стоит ...

Если ваше намерение твердо закреплено при использовании платформ Windows, мое предположение первого порядка:

  • кластерная серверная среда (множество многоядерных процессоров для обработки большого количества потоков при поддержке огромного количества доступной оперативной памяти)
  • ультрасовременное аппаратное обеспечение дисков - если вы хотите минимизировать влияниечастый доступ к виртуальной памяти вам, вероятно, понадобится для конкретных аппаратных опций, которые позволят вам буквально заменить шпиндельные накопители на более красноречивые флешки DRAM, то есть твердотельные накопители, а не на обычный тип, который вы обычно встречаете в современномiPod и мобильные КПК ... Я имею в виду реальную сделку - классические твердотельные накопители [ один прекрасный пример здесь - смотреть под оборудованием].Их продукция на два-три порядка быстрее, чем приводы шпинделей, и даже намного быстрее, чем потребительские твердотельные (хотя и не дешевые).

Ваши цели указывают на то, что стоимость невеликабеспокойство, но это почти так же хорошо, как я могу дать вам, но при этом вам не хватает более конкретной информации.

Последний совет, хотя, обращаясь за помощью к инженерам, лучше всего сказать им именно то, что вы стремитесь достичь (цель(ы)).Позвольте им предоставить варианты и сопоставить ограничения реальности и современных технологий с вашей дилеммой, а также с вашими финансовыми целями.Чаще всего, даже с эзотерическими и эксцентрическими требованиями, лучшим решением на самом деле является нестандартное инженерное решение, которое также оказывается гораздо дешевле в сборке / внедрении, чем метод грубой силы.Иными словами, помогают инженерам помочь вам , отмечая, что принцип GIGO также применим.

Я искренне надеюсь, что то, что я предоставил, будет полезным.Удачи.

...