Бит NX

редактировать

Бит NX (без выполнения) - это технология, используемая в ЦП для разделение областей памяти для использования либо для хранения инструкций процессора (кода), либо для хранения данных - функция, обычно имеющаяся только в процессорах с гарвардской архитектурой. Однако бит NX все чаще используется в процессорах с традиционной архитектурой фон Неймана по соображениям безопасности.

Операционная система с поддержкой бита NX может пометить определенные области памяти как неисполняемые. Тогда процессор откажется выполнять любой код, находящийся в этих областях памяти. Общий метод, известный как защита исполняемого пространства, также называемый Запись XOR Execute, используется для предотвращения захвата компьютеров некоторыми типами вредоносного программного обеспечения путем вставки их кода в хранилище данных другой программы. область и запуск собственного кода из этого раздела; один класс таких атак известен как атака переполнения буфера.

Intel продает эту функцию как бит XD (отключение выполнения). Advanced Micro Devices (AMD) использует маркетинговый термин Enhanced Virus Protection (EVP ). Архитектура ARM относится к функции, которая была представлена ​​в ARMv6, как XN (никогда не выполнять). Сам термин бит NX иногда используется для описания подобных технологий в других процессорах.

Содержание

  • 1 Поддержка архитектуры
    • 1.1 x86
    • 1.2 ARM
    • 1.3 Alpha
    • 1.4 SPARC
    • 1.5 PowerPC / Power ISA
    • 1.6 PA-RISC
    • 1.7 Itanium
    • 1.8 z / Architecture
  • 2 См. Также
  • 3 Ссылки
  • 4 Внешние ссылки

Поддержка архитектуры

x86

x86 процессоров, поскольку 80286, включает аналогичную возможность, реализованную на уровне сегмента. Однако почти все операционные системы для процессоров 80386 и более поздних версий x86 реализуют модель плоской памяти, поэтому они не могут использовать эту возможность. В этих процессорах не было флага «Исполняемый» в записи таблицы страниц (дескриптор страницы) до тех пор, пока, чтобы сделать эту возможность доступной для операционных систем, использующих модель плоской памяти, AMD не добавила на страницу бит «без выполнения» или NX. запись в таблице в его архитектуре AMD64, предоставляя механизм, который может управлять выполнением для страницы, а не для всего сегмента.

Intel реализовала аналогичную функцию в своем процессоре Itanium (Merced) с архитектурой IA-64 в 2001 году, но не привнесла ее в более популярный x86. семейства процессоров (Pentium, Celeron, Xeon и т. д.). В архитектуре x86 он был впервые реализован AMD как бит NX для использования в линейке процессоров AMD64, таких как Athlon 64 и Opteron.

. После решения AMD включить эту функцию в свой набор инструкций AMD64, Intel реализовала аналогичную функцию битов XD в процессорах x86, начиная с процессоров Pentium 4, основанных на более поздних итерациях ядра Prescott. Бит NX конкретно относится к биту номер 63 (т. Е. Старшему значащему биту) 64-битной записи в таблице страниц. Если этот бит установлен в 0, то код может быть выполнен с этой страницы; если установлено значение 1, код не может быть выполнен с этой страницы, и все, что там находится, считается данными. Он доступен только в длинном режиме (64-битный режим) или в устаревших форматах таблицы страниц Physical Address Extension (PAE), но не в исходном 32-битном формате таблицы страниц x86, поскольку записи таблицы страниц в этом формате отсутствует 63-й бит, используемый для отключения и включения выполнения.

ARM

В ARMv6 был введен новый формат записи таблицы страниц; он включает бит «никогда не выполнять». Для ARMv8-A, дескрипторов блоков и страниц VMSAv8-64, а также дескрипторов блоков и страниц с длинными дескрипторами VMSAv8-32, для трансляций на этапе 1 есть биты «никогда не выполнять» как для привилегированного, так и для непривилегированного режимов, а также для блока а дескрипторы страниц для трансляций на этапе 2 имеют один бит «никогда не выполнять» (два бита из-за функции ARMv8.2-TTS2UXN); Дескрипторы таблицы трансляции коротких дескрипторов VMSAv8-32 на уровне 1 имеют биты «никогда не выполнять» как для привилегированного, так и для непривилегированного режима, а на уровне 2 имеют один бит «никогда не выполнять».

Alpha

В четвертом издании руководства по архитектуре Alpha, DEC (теперь HP) Alpha имеет бит Fault on Execute в записях таблицы страниц с OpenVMS, Tru64 UNIX и Alpha Linux PALcode.

SPARC

Эталонный MMU SPARC для Sun SPARC версии 8 имеет значения разрешений Только чтение, чтение / запись, чтение / выполнение и чтение / запись / выполнение в записях таблицы страниц, хотя не все процессоры SPARC имеют ссылочный MMU SPARC.

MMU SPARC версии 9 может предоставлять, но не требуется, любую комбинацию разрешений на чтение / запись / выполнение. Запись таблицы трансляции в буфере хранилища трансляций в Oracle SPARC Architecture 2011, проект D1.0.0 имеет отдельные исполняемые и записываемые биты.

PowerPC / Power ISA

Записи таблицы страниц для IBM Таблицы хешированных страниц PowerPC имеют бит невыполнения страницы. Записи таблицы страниц для таблиц страниц дерева счисления в Power ISA имеют отдельные биты разрешений, предоставляющие доступ на чтение / запись и выполнение.

PA-RISC

Записи резервного буфера трансляции (TLB) и таблица страниц Записи в PA-RISC 1.1 и PA-RISC 2.0 поддерживают страницы только для чтения, чтения / записи, чтения / выполнения и чтения / записи / выполнения.

Itanium

Записи TLB в Itanium поддерживают страницы только для чтения, чтения / записи, чтения / выполнения и чтения / записи / выполнения.

z / Architecture

Начиная с В двенадцатом издании Принципов работы z / Architecture процессоры z / Architecture могут поддерживать средство защиты выполнения инструкций, которое добавляет бит в записи таблицы страниц, который определяет, выполняются ли инструкции из данной области, сегмента или страница может быть запущена.

См. также

Ссылки

Внешние ссылки

Последняя правка сделана 2021-05-31 07:36:25
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте