Physical Address Extension (PAE) — режим работы встроенного блока управления памятью x86-совместимых процессоров, в котором используются 64-битные элементы таблиц страниц (из которых для адресации используются только 36 бит), c помощью которых процессор может адресовать 64 ГБ физической памяти (вместо 4 ГБ, адресуемых при использовании 32-разрядных таблиц), хотя каждая задача (программа) всё равно может адресовать максимум до 4 ГБ виртуальной памятичасть адресного пространства, обычно от 0,9 до 2 ГБ резервируется под нужды ОС и недоступны приложению, см 3 GB barrier, . Также в новых моделях процессоров в PAE-режиме старший бит элемента таблицы страниц отвечает за запрет исполнения кода в странице, что затрудняет атаку по методу переполнения буфера.

Впервые расширение появилось в процессоре Pentium Pro. Для использования 36-разрядной адресации памяти необходима поддержка расширения физических адресов на программном уровне (включение режима PAE в ОС) и аппаратном: необходима поддержка как со стороны процессора, так и материнской платы (можно определить по команде CPUID). Материнские платы с поддержкой PAE, как правило, были дорогими и предназначались для серверов..

Применение PAE позволяет использовать более 4 ГБ оперативной памяти в 32-битной ОС. PAE требуется для поддержки NX в 32-битной системе.

Проблемы Из-за увеличения количества страничных уровней система начинает тратить больше времени при обращении к памяти. Таким образом, если типичный объём используемой программой памяти незначительно больше 2 ГБ, то работа без PAE может быть эффективнее. Некоторые драйверыНапример, драйвер Microsoft Device Emulator несовместимы с режимом PAE. В 32-битной Windows режим включается автоматически, когда система поддерживает PAE (Physical Address Extension) и присутствует более 4 ГБ памяти, и, если не задать «noexecute=alwaysoff /nopae» в boot.ini, который запрещает загрузчику (NTLDR) использовать PAE-версию ядра. Если пользователь включил запрет исполнения кода в страницах памяти (NX, технология DEP), то режим PAE в 32-битных версиях ОС Windows включается автоматически, независимо от наличия «/nopae».

Поддержка PAE в различных ОС

Windows Начиная с Windows XP Service Pack 2, по умолчанию, на процессорах с поддержкой технологий no-execute (NX) или execute-disable (XD) система использует PAE для возможности использования DEP.

В 32-битных клиентах Microsoft Windows (начиная с Windows XP SP2) использование 36-битного PAE включается ключом /PAE в файле boot.ini, однако, максимальный физический адрес доступного операционной системе ОЗУ искусственно ограничен на уровне ядра по маркетинговым соображениямLicensed Memory in Windows Vista // Geoff Chappell, 2012 . В Windows XP это ограничение составляет 4 ГБ, 32-разрядный Windows Server 2003 Enterprise Edition поддерживает до 64 ГБ. Существуют программы, позволяющие обойти ограничение на доступную память, но их использование является нарушением лицензионного соглашения Microsoft. В случае 4 ГБ ОЗУ память можно использовать в Windows XP почти полностью, переместив системные области адресного пространства выше 4 ГБ, такую функцию поддерживают некоторые версии BIOS. Тем не менее, согласно заявлениям Microsoft, введение 4-ГБ ограничения адресного пространства связано с отсутствующей или плохой поддержкой 36-битного адресного пространства некоторыми драйверами устройствЕще раз про Windows и четыре гигабайта // IXBT 8 августа 2012 г. Игорь Петрович Лейко.

Одним из пунктов минимальных системных требований Windows 8 является обязательная поддержка процессором PAE.

Другой возможностью для использования более 4 гигабайт памяти является интерфейс Address Windowing Extensions.

Обычные 32-битные версии Windows поддерживают до 4—8 ГБ ОЗУ, Datacenter - до 32—64. В Starter версиях Windows XP и Vista — ограничение в 0,5—1 ГБ.

Также для 32-битных приложений в Windows можно использовать специальный патчер, который снимает лимит используемой ОЗУ в 2 ГБ без необходимости его перекомпилировать. Применим и для 32-битных приложений в 64-битной среде Windows с аналогичной целью. Это нужно в основном для увеличения адресного пространства 32-битных приложений, так как они ограничиваются вышеуказанным объемом в 2 ГБ на каждый процесс. Стоит отметить, что этот способ не всегда работает и приложение может перестать запускаться. В некоторых случаях пропатченное приложение таким образом может увеличить свою производительность, например, скорость запуска уровня в некоторых играх.

Linux В ядре Linux полная поддержка PAE имеется, начиная с версии 2.3.23 (1999). Оно поддерживает 36-битную физическую адресацию — до 64 ГБ ОЗУ. Для запуска ядра, собранного с поддержкой PAE (опция CONFIG_X86_PAE=y), требуется процессор с данной функцией; загрузка на более ранних процессорах, таких как Pentium Pro или Pentium M, невозможна. Многие дистрибутивы поставляются либо с дополнительным пакетом PAE-ядра, либо используют такое ядро по умолчанию. Например, с 2009 Fedora перешла на PAE-ядро В 2012 году некоторые дистрибутивы, например RHEL 6 и Ubuntu 12.10, прекратили поставку ядер без поддержки PAE. Fedora и Debian продолжают распространение как PAE-, так и не PAE- версий ядра Features/ArchitectureSupport // FedoraChapter 29. Manually Upgrading the Kernel // Fedora 12 Documentation: «29.1. Overview of Kernel Packages».

Включение PAE необходимо для поддержки функциональности NX (доступна с ядер 2.6.8)Professional Linux Kernel Architecture , Figure 3.16 Code flow for paging_init, «Execute Disable Protection is also enabled if supported by processor and if the kernel was compiled with PAE support; unfortunately, the feature is otherwise not available.».

FreeBSD FreeBSD поддерживает PAE: в линейке 4.x версий — начиная с 4.9, в линейке 5.x версий — начиная с 5.1, все 6.x и более поздние. Не все драйверы поддерживают более 4 ГБ ОЗУ и поэтому могут работать некорректно.

Mac OS X В Mac OS X режим PAE включён по умолчанию при использовании 32-разрядного ядра.

Solaris Solaris поддерживает PAE, начиная с версии 7. Однако драйверы сторонних разработчиков могут работать некорректно.

См. также PSE-36 бит NX

Примечания

Ссылки Physical Address Extension — PAE Memory and Windows Physical Address Extension Поддержка памяти большого размера в Windows Server 2003 и Windows 2000 PAE в Ubuntu

Категория:Расширения архитектуры x86 Категория:Защита памяти Категория:Виртуальная память