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. Однакодрайверысторонних разработчиков могут работать некорректно.
См. также
[править|править код]Примечания
[править|править код]- ↑часть адресного пространства, обычно от 0,9 до 2 ГБ резервируется под нужды ОС и недоступны приложению, см3 GB barrier,[1]Архивная копияот 6 января 2014 наWayback Machine
- ↑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 года.
- ↑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 года.
- ↑Physical Address Extension .Дата обращения: 1 ноября 2011.Архивировано28 октября 2011 года.
- ↑Например, драйвер Microsoft Device Emulator
- ↑Physical Address Extension — PAE Memory and Windows .Дата обращения: 23 декабря 2013.Архивировано24 декабря 2013 года.
- ↑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 года.
- ↑Licensed Memory in Windows VistaАрхивная копияот 12 апреля 2022 наWayback Machine// Geoff Chappell, 2012(англ.)
- ↑How to use full 4GB RAM in Windows 7 32 Bit (Gavotte RAMDisk in Windows 7) | Homepage of Jens Scheffler .Дата обращения: 26 декабря 2013.Архивировано6 февраля 2014 года.
- ↑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 года.
- ↑Еще раз про Windows и четыре гигабайтаАрхивная копияот 24 декабря 2013 наWayback Machine// IXBT 8 августа 2012 г. Игорь Петрович Лейко
- ↑Memory Limits for Windows Releases .Microsoft(25 марта 2010). Дата обращения: 5 апреля 2010.Архивировано20 июня 2009 года.
- ↑"Преодолевая ограничения Windows: виртуальная память".Mark Russinovich по-русски(англ.).Архивировано30 ноября 2018.Дата обращения:29 ноября 2018.
- ↑2.3.23-pre4 x86 64 GB RAM changes [HIGHMEM patch] explained a bit .Дата обращения: 27 ноября 2013.Архивировано10 января 2014 года.
- ↑x86 Specifics for Fedora 11 .Дата обращения: 27 ноября 2013.Архивировано10 мая 2013 года.
- ↑EnablingPAE .Дата обращения: 28 апреля 2013.Архивировано13 марта 2011 года.
- ↑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 года.
- ↑Features/ArchitectureSupportАрхивная копияот 3 декабря 2013 наWayback Machine// Fedora
- ↑Chapter 29. Manually Upgrading the KernelАрхивная копияот 3 июня 2014 наWayback Machine// Fedora 12 Documentation: «29.1. Overview of Kernel Packages»
- ↑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.»
- ↑corbet (2004-06-02)."x86 NX support".LWN.Архивировано2 декабря 2013.Дата обращения:27 ноября 2013.