WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

Intel MPX (англ. Memory Protection Extensions — расширения защиты памяти) — расширение набора инструкций для архитектуры x86/x86-64. С поддержкой со стороны компилятора, библиотек среды выполнения и операционной системы, расширение Intel MPX увеличивает безопасность программ по отношению к доступу к памяти, добавляя проверки доступа по указателям, в частности, для предотвращения атак, использующих переполнение буфера.

MPX вводит новые регистры границ и несколько инструкций, которые обрабатывают эти регистры. Дополнительно вводится понятие «таблиц границ», которые хранят описания диапазонов памяти, в случае нехватки регистров границ.[1][2][3][4]

MPX определяет четыре новых 128-разрядных регистра границ, BND0 — BND3, каждый из которых хранит пару 64-битных нижних границ (LB) и верхних границ (UB) значений какого-то объекта в памяти, например буфера или массива. Верхняя граница хранится в формате дополнения до единицы, преобразование происходит при загрузке значения инструкциями BNDMK и BNDCU. В архитектуру добавлен пользовательский регистр конфигурации BNDCFGU, привилегированный регистр конфигурации IA32_BNDCFGS (в состав MSR-регистров), и регистр состояния BNDSTATUS, который предоставляет информацию об ошибочном адресе в памяти и код ошибки в случае исключения.[5]

Приложение может использовать каталог границ — Bounds Directory (BD) из нескольких таблиц границ — Bounds Tables (BT), которые содержат линейные адреса указателя на буфер, вместе с границами буфера. Таблицы организованы как двухуровневое radix-дерево от линейного адреса указателя[6]. Два инструкции загрузки и сохранения — BNDLDX и BNDSTX — синхронизируют значения регистров BNDx с границами, указанными в каталоге.[5] Две инструкции, вставляемые компилятором, BNDCL и BNDCU, производят проверку указателя на нахождение в пределах указанных границ (нижней и верхней соответственно) и приводят к генерации исключения при выходе за границы.

Расширения Intel МРХ были введены в микроархитектуре Skylake.[7] Поддержка в ядре Linux появилась с версии 3.19 (8 февраля 2015),[8][9] дополнена с версии 4.1[6].

Микроархитектуры Intel Goldmont также поддерживают Intel MPX.[10]

Поддерживаются в GCC 5.2 и новее[6][11] и Intel Compiler[когда?][12].

Применение MPX требует дополнительной памяти для описания границ. В наихудшем случае для 4 килобайтов различных указателей (1024 или 512) потребуется 16 килобайт таблиц границ (каждая граница хранит 4 величины размером с указатель). Загрузка границ из таблиц или в таблицы является обращением в память и может несколько замедлять работу некоторых программ[6].

Примечания

  1. ↑ Intel ISA Extensions. Intel. Проверено 4 ноября 2013.
  2. ↑ Introduction to Intel Memory Protection Extensions. Intel (16 июля 2013). Проверено 10 сентября 2013.
  3. ↑ Discussion of Intel Memory Protection Extensions (MPX) and comparison with AddressSanitizer. code.google.com. Проверено 4 ноября 2013.
  4. ↑ Intel Memory Protection Extensions (Intel MPX) support in the GCC compiler. gcc.gnu.org. Проверено 4 ноября 2013.
  5. 1 2 Intel Architecture Instruction Set Extensions Programming Reference (PDF). Intel (December 2013). Проверено 17 января 2014. Архивировано 1 февраля 2014 года.
  6. 1 2 3 4 Intel® Memory Protection Extensions (Intel® MPX) for Linux* | 01.org
  7. ↑ Intel Software Development Emulator. Intel (15 июня 2012). Проверено 4 ноября 2013.
  8. ↑ Linux kernel 3.19, Section 1.2. Support for the Intel Memory Protection Extensions. kernelnewbies.org (February 9, 2015). Проверено 9 февраля 2015.
  9. ↑ Jonathan Corbet. Supporting Intel MPX in Linux. LWN.net (January 29, 2014). Проверено 9 февраля 2015.
  10. ↑ Intel Software Development Emulator. Intel.
  11. ↑ Intel Memory Protection Extensions (Intel MPX) support in the GCC compiler. gcc.gnu.org. Проверено 4 ноября 2013.
  12. ↑ https://istep2016.ru/files/presentations/IntelR%20Compilers.pdf#page=26 Архивировано 21 ноября 2016 года.

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2026
WikiSort.ru - проект по пересортировке и дополнению контента Википедии