Address Windowing Extensions (Address Windowing Extensions)
Address Windowing Extensions (AWE) — программный интерфейс в ОС семейства Microsoft Windows, позволяющий 32-битному приложению получить доступ к оперативной памяти, размер которой превышает размеры доступного приложению виртуального адресного пространства (2-3[1] гигабайта). Процесс отображения дополнительной памяти в адресное пространство приложения при помощи AWE называется «windowing» (оконный доступ) и схож с концепцией «overlay», используемой, например, в DOS. AWE подходит для приложений, обрабатывающих большие объёмы данных, например СУБД, научных и инженерных приложений.
Приложение выделяет регион памяти, называемый окно (window), в виртуальном адресном пространстве и запрашивает при помощи интерфейса выделение одного или нескольких регионов физической памяти. Позже интерфейс позволяет приложению отобразить любой выделенный регион физической памяти на окно в адресном пространстве. Допустимо создание нескольких окон, таким образом, что суммарный размер окон не превышает размер доступного виртуального адресного пространства. Размеры окон и регионов физической памяти могут быть произвольными (кратными размеру страницы памяти, 4096 байт), но на любое из окон возможно отображение региона физической памяти, не превосходящего по размеру окно.
Использование AWE должно быть заложено в код приложения. Также приложение должно иметь права «Lock Pages in Memory» (блокирование фрагмента памяти от выгрузки) для использования AWE.
AWE не зависит от расширения Physical Address Extension и не препятствует его использованию[2].
В статье 2004 года, опубликованной в Dr. Dobb's Journal, отмечалось, что память, выделенная при помощи Address Windowing Extensions, не подлежит сохранению в swap-файле, и было высказано предположение, что регионы AWE-памяти можно использовать для защиты данных, например, ключей шифрования.[3]
Также возможным примером может являться специальный патчер: для 32-битных приложений в Windows можно использовать специальный патчер, который снимает лимит используемой ОЗУ в 2 ГБ без необходимости его перекомпилировать. Применим и для 32-битных приложений в 64-битной среде Windows с аналогичной целью. Это нужно в основном для увеличения адресного пространства 32-битных приложений, так как они ограничиваются вышеуказанным объемом в 2 ГБ на каждый процесс[4]. Но стоит также отметить, что этот способ не всегда работает и приложение может перестать запускаться. И в некоторых случаях пропатченное приложение таким образом может увеличить свою производительность, например, скорость запуска уровня в некоторых играх.
См. также
[править | править код]Примечания
[править | править код]- ↑ Memory Limits for Windows Releases (англ.). MSDN (5 мая 2012). Дата обращения: 7 июня 2012. Архивировано из оригинала 12 августа 2012 года.
- ↑ Physical Address Extension . Microsoft (6 ноября 2008). Дата обращения: 13 декабря 2008. Архивировано из оригинала 12 августа 2012 года.
- ↑ Coombs, Jason Protecting RAM Secrets with Address Windowing Extensions . Dr. Dobb's Journal (18 октября 2004). Дата обращения: 8 декабря 2007. Архивировано из оригинала 12 августа 2012 года.
- ↑ "Преодолевая ограничения Windows: виртуальная память". Mark Russinovich по-русски (англ.). Архивировано 30 ноября 2018. Дата обращения: 29 ноября 2018.
Ссылки
[править | править код]- Address Windowing Extensions на MSDN
- Address Windowing Extensions — пример использования с MSDN