При загрузке игра определяет размер доступной _физической_ памяти, после чего выделяет ее значительный процент себе по каким-то разумным кусочкам пока эти разумные кусочки можно выделять в физической памяти.
Далее игра создает собственный своп и использует его, не трогая системный.
Под винду.
Существуют ли способы
1. Определить, находятся ли данные в памяти или на диске ?
2. Запретить программе использовать системный своп ?
3. Запретить винде выгружать определенные данные в своп ?
4. Указать резервировать память только в физической памяти ?
Другими словами, _очень_ хочется иметь полный контроль за тем, что будет происходить и хочется понять :
1. А это вообще можно сделать ?
2. Куда копать ?
Большое спасибо.
14.11.06 15:15: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
Здравствуйте, Сергей Мухин, Вы писали:
СМ>Здравствуйте, black_wolf_ltd, Вы писали:
__>>Вобщем так. Хочу сделать следующее.
СМ>везет же людям. Есть работающая программа, сделанная собстевнными руками, осталось малость. СМ>Интересно какой тип игры?
Здравствуйте, black_wolf_ltd, Вы писали:
__>1. Определить, находятся ли данные в памяти или на диске ? __>2. Запретить программе использовать системный своп ? __>3. Запретить винде выгружать определенные данные в своп ? __>4. Указать резервировать память только в физической памяти ? __>Другими словами, _очень_ хочется иметь полный контроль за тем, что будет происходить и хочется понять :
Зачем это надо?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
> __>4. Указать резервировать память только в физической памяти ? > > > Да. Выделять память по VirtualAlloc(MEM_PHYSICAL) и далее см. MSDN. Но потребуется привилегия SE_LOCK_MEMORY_NAME, которую обычно юзеру не дают
Если "см. MSDN", то выяснится, что "This value is solely for use with Address Windowing Extensions (AWE) memory".
Posted via RSDN NNTP Server 2.0
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[3]: Физическая память и файл подкачки в Windows.
>> Да. Выделять память по VirtualAlloc(MEM_PHYSICAL) и далее см. MSDN. Но потребуется привилегия SE_LOCK_MEMORY_NAME, которую обычно юзеру не дают
S>Если "см. MSDN", то выяснится, что "This value is solely for use with Address Windowing Extensions (AWE) memory".
И что ? У тебя Pentium-1, у которого нет PAE ?
With best regards
Pavel Dvorkin
Re: Физическая память и файл подкачки в Windows.
От:
Аноним
Дата:
13.11.06 08:11
Оценка:
SetProcessWorkingSetSize заставит винду не отсвапливать память процесса пока ее размер меньше указанного значения (если хватит доступной физ памяти)
Re: Физическая память и файл подкачки в Windows.
От:
Аноним
Дата:
13.11.06 08:23
Оценка:
Здравствуйте, black_wolf_ltd, Вы писали:
__>Вобщем так. Хочу сделать следующее.
__>При загрузке игра определяет размер доступной _физической_ памяти, после чего выделяет ее значительный процент себе по каким-то разумным кусочкам пока эти разумные кусочки можно выделять в физической памяти.
__>Далее игра создает собственный своп и использует его, не трогая системный.
__>Под винду.
__>Существуют ли способы
__>1. Определить, находятся ли данные в памяти или на диске ? __>2. Запретить программе использовать системный своп ? __>3. Запретить винде выгружать определенные данные в своп ? __>4. Указать резервировать память только в физической памяти ?
__>Другими словами, _очень_ хочется иметь полный контроль за тем, что будет происходить и хочется понять :
__>1. А это вообще можно сделать ?
все о чем ты писал возможно
__>2. Куда копать ?
в DDK
Re[2]: Физическая память и файл подкачки в Windows.
Здравствуйте, Аноним, Вы писали:
А>SetProcessWorkingSetSize заставит винду не отсвапливать память процесса пока ее размер меньше указанного значения (если хватит доступной физ памяти)
Здравствуйте, black_wolf_ltd, Вы писали:
__>1. Определить, находятся ли данные в памяти или на диске ? __>2. Запретить программе использовать системный своп ? __>3. Запретить винде выгружать определенные данные в своп ? __>4. Указать резервировать память только в физической памяти ?
В полном объеме Ваши пожелания доступны только ядру ОС. С некоторыми ограничениями — драйверам режима ядра.
__>При загрузке игра определяет размер доступной _физической_ памяти, после чего выделяет ее значительный процент себе по каким-то разумным кусочкам пока эти разумные кусочки можно выделять в физической памяти.
собственно говоря здесь и есть ответ на вопрос. выделяйте память так, чтобы другим задачам и системе оставалось столько, чтобы не свопилось. даже если выделить зафиксированный в физической памяти буфер, а у системе возникнет нехватка памяти, то она начнет свопить память других приложений, которую уж точно контролировать невозможно. ТОРМОЗА БУДУТ ВОЗНИКАТЬ ПРИ НЕДОСТАТКЕ ПАМЯТИ В ЛЮБОМ СЛУЧАЕ