Открыть сервисСервис

ПАВ — технология виртуальной памяти

ПАВ (англ. PAV — Physical Address Virtualization, физическая адресация виртуализированная) — технология виртуализации памяти, реализованная в процессорах Intel с архитектурой x86-64. ПАВ позволяет операционной системе и гипервизору разделять физическую память компьютера между несколькими виртуальными машинами, обеспечивая изоляцию адресных пространств и прямой доступ к физической памяти из программ гостевой ОС. В более широком контексте под ПАВ понимают механизм программно-аппаратной поддержки виртуальной памяти, включая трансляцию виртуальных адресов в физические и обратно.

История и происхождение

Технология ПАВ появилась в 2000-х годах как ответ на рост популярности виртуализации. Классическая виртуализация x86-процессоров требовала сложных приёмов «бинарной трансляции» или модификации ядра гостевой ОС, поскольку инструкции с привилегиями выполнялись только в кольце 0, а гостевая ОС должна была работать в кольце 1 или 3. Intel VT-x (2005) и AMD-V (2006) добавили аппаратную поддержку виртуализации, а за ними последовали расширения для работы с памятью.

Расширение Intel EPT (Extended Page Tables, 2008) и аналогичный механизм AMD RVI/NPT (Nested Page Tables) реализуют двойную трансляцию адресов: гостевой ОС кажется, что она работает с собственными физическими адресами, но на самом деле эти «физические» адреса являются виртуальными относительно реальной памяти хоста. Механизм ПАВ выполняет эту трансляцию аппаратно, без участия гипервизора на каждом обращении к памяти.

Принцип работы

В классической модели без виртуализации процессор выполняет двухуровневую трансляцию: виртуальный адрес → физический адрес (через таблицы страниц ОС). При виртуализации с ПАВ добавляется третий уровень:

  1. Гостевая ОС формирует виртуальный адрес и транслирует его в «физический» адрес гостя через собственные таблицы страниц.
  2. Аппаратура процессора дополнительно транслирует этот «физический» адрес гостя в реальный физический адрес хоста через таблицы страниц EPT/NPT, управляемые гипервизором.
  3. Доступ к памяти выполняется без участия программного обеспечения гипервизора.

Таким образом, каждая виртуальная машина получает собственное изолированное адресное пространство, а гипервизор контролирует, какая часть физической памяти доступна каждому гостю. Попытка гостевой ОС обратиться к памяти вне разрешённого диапазона вызывает исключение, которое перехватывается гипервизором.

Преимущества

  • Производительность. Трансляция адресов выполняется аппаратно, что устраняет накладные расходы на бинарную трансляцию инструкций.
  • Изоляция. Каждая виртуальная машина работает в собственном адресном пространстве, что повышает безопасность при размещении нескольких гостей на одном хосте.
  • Прозрачность. Гостевая ОС не требует модификаций — она считает, что управляет реальной памятью.
  • Упрощение гипервизора. Код гипервизора становится проще, так как не нужно программно эмулировать таблицы страниц гостя.

Поддержка процессорами

Процессорный наборРеализацияГод появления
Intel VT-xEPT (Extended Page Tables)2008 (Nehalem)
AMD-VRVI / NPT (Nested Page Tables)2007 (Barcelona)
Intel VT-xVPID (Virtual Processor Identifiers)2010

VPID — дополнительное расширение, которое позволяет кэшировать трансляции адресов гостя в TLB (трансляционный буфер адресов) и помечать их идентификатором виртуальной машины, избегая полной очистки TLB при переключении контекста между гостями.

Применение

Технология ПАВ лежит в основе работы всех современных гипервизоров первого типа: VMware ESXi, Microsoft Hyper-V, Xen, KVM, QEMU. Она используется в облачных платформах (виртуальные машины в облаках), в системах виртуализации рабочих столов, при запуске нескольких ОС на одном сервере. Без аппаратной поддержки ПАВ виртуализация на x86-платформах была бы существенно медленнее и сложнее в реализации.

ПАВ и другие технологии

С развитием виртуализации появились расширения, дополняющие ПАВ: Intel VT-d (виртуализация устройств ввода-вывода), SR-IOV (прямой доступ виртуальных машин к сетевым адаптерам), а также механизмы разделяемой памяти (shared memory) для быстрого обмена данными между гостями и хостом. В 2010-х годах на базе тех же принципов виртуализации памяти были построены системы с машинной виртуализацией (KVM) и контейнерные технологии, хотя последние используют иной подход — общее адресное пространство ядра хоста.

Источники:

  • Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 3C: System Programming Guide
  • AMD64 Architecture Programmer's Manual, Volume 2: System Programming
  • Goldberg R. Virtual Machines: Techniques for Implementing a Universal Computer. PhD thesis, University of California, Berkeley, 1973
  • Adams K., Agesen O. A Comparison of Software and Hardware Techniques for x86 Virtualization // ASPLOS 2006
  • Documentation KVM (kernel.org)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru