PAE

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

[править|править код]

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

В 32-битных клиентах Microsoft Windows (начиная с Windows XP SP2) использование 36-битного PAE включается ключом /PAE в файле boot.ini, однако, максимальный физический адрес доступного операционной системеОЗУискусственно ограничен на уровне ядра по маркетинговым соображениям[8].В Windows XP это ограничение составляет 4 ГБ, 32-разрядныйWindows Server 2003Enterprise Edition поддерживает до 64 ГБ. Существуют программы, позволяющие обойти ограничение на доступную память[9],но их использование является нарушением лицензионного соглашения Microsoft[10].В случае 4 ГБ ОЗУ память можно использовать в Windows XP почти полностью, переместив системные области адресного пространства выше 4 ГБ, такую функцию поддерживают некоторые версии BIOS. Тем не менее, согласно заявлениям Microsoft, введение 4-ГБ ограничения адресного пространства связано с отсутствующей или плохой поддержкой 36-битного адресного пространства некоторыми драйверами устройств[11].

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

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

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

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

ВядреLinuxполная поддержка PAE имеется, начиная с версии 2.3.23 (1999)[14].Оно поддерживает 36-битную физическую адресацию — до 64 ГБОЗУ.Для запуска ядра, собранного с поддержкой PAE (опцияCONFIG_X86_PAE=y), требуется процессор с данной функцией; загрузка на более ранних процессорах, таких как Pentium Pro или Pentium M, невозможна. Многиедистрибутивыпоставляются либо с дополнительным пакетом PAE-ядра, либо используют такое ядро по умолчанию. Например, с 2009 Fedora перешла на PAE-ядро[15]В 2012 году некоторые дистрибутивы, например RHEL 6 и Ubuntu 12.10, прекратили поставку ядер без поддержки PAE[16][17].FedoraиDebianпродолжают распространение как PAE-, так и не PAE- версий ядра[18][19].

Включение PAE необходимо для поддержки функциональности NX (доступна с ядер 2.6.8)[20][21].

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

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

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

  1. часть адресного пространства, обычно от 0,9 до 2 ГБ резервируется под нужды ОС и недоступны приложению, см3 GB barrier,[1]Архивная копияот 6 января 2014 наWayback Machine
  2. Intel Corporation.Intel Chipset 4 GB System Memory Support(pdf).Pentium Pro Family Developer’s Manual7 (февраль 2005). — «In uni-processor based systems for mobile, desktop, workstation, and entry level servers, chipsets may be limited to 4 GB of maximum memory. In today’s dual processor Intel server chipsets and workstations, maximum system memory size can be upwards of 16 GB.»Архивировано28 октября 2014 года.
  3. Jamie Adams.Protecting Linux Against Overflow Exploits(англ.).infosec (23 сентября 2010). — «Most Linux distributions bundle NX support with a PAE-enabled kernel (kernel-PAE). However, some people don't install the Physical Address Extension (PAE) kernel because they think it is just to provide support for physical memory above 4GB.» Дата обращения: 27 ноября 2013. Архивировано изоригинала3 декабря 2013 года.
  4. Physical Address Extension.Дата обращения: 1 ноября 2011.Архивировано28 октября 2011 года.
  5. Например, драйвер Microsoft Device Emulator
  6. Physical Address Extension — PAE Memory and Windows.Дата обращения: 23 декабря 2013.Архивировано24 декабря 2013 года.
  7. The RAM reported by the System Properties dialog box and the System Information tool is less than you expect in Windows Vista or in Windows XP Service Pack 2 or later version.Дата обращения: 2 декабря 2009.Архивировано4 июня 2011 года.
  8. Licensed Memory in Windows VistaАрхивная копияот 12 апреля 2022 наWayback Machine// Geoff Chappell, 2012(англ.)
  9. How to use full 4GB RAM in Windows 7 32 Bit (Gavotte RAMDisk in Windows 7) | Homepage of Jens Scheffler.Дата обращения: 26 декабря 2013.Архивировано6 февраля 2014 года.
  10. Geoff Chappell - Software Analyst.Licensed Memory in 32-Bit Windows Vista(англ.).— «That 32-bit editions of Windows starting with Windows Vista are limited to 4GB...The 32-bit editions of Windows Vista and Windows 7 all contain code for using physical memory above 4GB. Microsoft just doesn’t license you to use that code.» Дата обращения: 26 декабря 2013.Архивировано10 декабря 2013 года.
  11. Еще раз про Windows и четыре гигабайтаАрхивная копияот 24 декабря 2013 наWayback Machine// IXBT 8 августа 2012 г. Игорь Петрович Лейко
  12. Memory Limits for Windows Releases.Microsoft(25 марта 2010). Дата обращения: 5 апреля 2010.Архивировано20 июня 2009 года.
  13. "Преодолевая ограничения Windows: виртуальная память".Mark Russinovich по-русски(англ.).Архивировано30 ноября 2018.Дата обращения:29 ноября 2018.
  14. 2.3.23-pre4 x86 64 GB RAM changes [HIGHMEM patch] explained a bit.Дата обращения: 27 ноября 2013.Архивировано10 января 2014 года.
  15. x86 Specifics for Fedora 11.Дата обращения: 27 ноября 2013.Архивировано10 мая 2013 года.
  16. EnablingPAE.Дата обращения: 28 апреля 2013.Архивировано13 марта 2011 года.
  17. RHEL 6 Release Notes, 12.6. General Kernel Updates 12.6.1. Physical Address Extension (PAE).RedHat. — «The default kernel shipped with the x86 architecture version of Red Hat Enterprise Linux 6 is PAE enabled. A PAE enabled processor is a minimum requirement for the x86 variant of Red Hat Enterprise Linux 6.» Дата обращения: 27 ноября 2013.Архивировано3 декабря 2013 года.
  18. Features/ArchitectureSupportАрхивная копияот 3 декабря 2013 наWayback Machine// Fedora
  19. Chapter 29. Manually Upgrading the KernelАрхивная копияот 3 июня 2014 наWayback Machine// Fedora 12 Documentation: «29.1. Overview of Kernel Packages»
  20. Professional Linux Kernel ArchitectureАрхивная копияот 5 декабря 2013 наWayback Machine,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.»
  21. corbet (2004-06-02)."x86 NX support".LWN.Архивировано2 декабря 2013.Дата обращения:27 ноября 2013.