Расширение оконного адреса - PullRequest
       35

Расширение оконного адреса

2 голосов
/ 02 сентября 2011

У меня 32-битное приложение с очень большими требованиями к памяти.

Я заметил, что есть нечто, называемое Расширение оконного адреса .

Однако я не нашел многоинформация о том, как его использовать, а также о том, с какими недостатками и проблемами можно столкнуться при использовании этого?

Ответы [ 2 ]

0 голосов
/ 20 апреля 2014

Что ж, правда в том, что вы можете использовать AWE из 32-битного приложения, работающего в 64-битной ОС Windows, и вам не нужен PAE.Например, MS SQL Server (до версии 2012) может быть настроен в этом режиме.

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

Выесть несколько недостатков:

  • Необходимо запустить с пользователем с SeLockMemoryPrivilege
  • Память не может быть разделена с другим процессом.Выделяется в физической памяти.Оставляя меньше памяти для ОС и других приложений (с AllocateUserPhysicalPages).
  • Вам необходим виртуальный адрес для доступа к такой памяти.Таким образом, вы можете иметь окна памяти 4 ГБ с флагом LARGE_ADDRESS_AWARE.
  • Если вы хотите получить доступ к большему количеству 4 ГБ, вам необходимо отобразить / отменить отображение этих физических страниц (с MapUserPhysicalPages).

Эта статья от 1999 года объясняет, как использовать такой API.

0 голосов
/ 02 сентября 2011
  • Он не должен работать в версиях Windows на 64 битах (см. Здесь http://msdn.microsoft.com/en-us/library/aa366778.aspx. Спецификация PAE от Intel и AMD поддерживает архитектуру x86-64, но программный уровень Microsoft PAE (API), называемый AWE. , не поддерживается в 64-разрядных выпусках Windows, поэтому 64-разрядная версия Windows Vista не может присвоить более 4 ГБ ОЗУ для 32-разрядного приложения.).
  • Даже в 32-разрядной версии Windows существует «лицензионный» лимит на объем используемой памяти (на той же странице показаны все ограничения).
  • И очевидно, что это сложно для программирования :-) Это похоже на использование EMS на старом 8086.
...