PAE

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

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

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

Применение[править | править вики-текст]

  • PAE позволяет использовать более 4GB оперативной памяти в 32-битной ОС.
  • PAE требуется для поддержки NX[2].

Проблемы[править | править вики-текст]

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

Поддержка PAE в различных ОС[править | править вики-текст]

Windows[править | править вики-текст]

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

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

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

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

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

Linux[править | править вики-текст]

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

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

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. Однако драйверы сторонних разработчиков могут работать некорректно.

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. часть адресного пространства, обычно от 0.9 до 2 ГБ резервируется под нужды ОС и недоступны приложению, см 3 GB barrier, [1]
  2. Jamie Adams. Protecting Linux Against Overflow Exploits (англ.). infosec (September 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. Physical Address Extension
  4. Например, драйвер Microsoft Device Emulator
  5. Physical Address Extension - PAE Memory and Windows
  6. 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
  7. Licensed Memory in Windows Vista // Geoff Chappell, 2012  (англ.)
  8. How to use full 4GB RAM in Windows 7 32 Bit (Gavotte RAMDisk in Windows 7) | Homepage of Jens Scheffler
  9. 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. Еще раз про Windows и четыре гигабайта // IXBT 8 августа 2012 г. Игорь Петрович Лейко
  11. Memory Limits for Windows Releases. Microsoft (March 25, 2010). Проверено 5 апреля 2010.
  12. 2.3.23-pre4 x86 64 GB RAM changes [HIGHMEM patch] explained a bit.
  13. x86 Specifics for Fedora 11.
  14. EnablingPAE. Проверено 28 апреля 2013.
  15. 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.
  16. Features/ArchitectureSupport // Fedora
  17. Chapter 29. Manually Upgrading the Kernel // Fedora 12 Documentation: «29.1. Overview of Kernel Packages»
  18. 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.»
  19. corbet. x86 NX support, LWN (June 2, 2004). Проверено 27 ноября 2013.

Ссылки[править | править вики-текст]