hostprofi.ru
Подобрать хостинг
Термин·буква П

Программная виртуализация

краткое определение

Метод виртуализации, при котором гипервизор эмулирует аппаратное обеспечение программным способом без аппаратной поддержки CPU: гостевая ОС не знает о виртуализации и все привилегированные инструкции перехватываются и транслируются.

Программная виртуализация — метод создания виртуальных машин, при котором гипервизор полностью эмулирует физическое оборудование в программном коде. Гостевая ОС запускается как если бы работала на реальном железе, не зная о виртуализации. Гипервизор перехватывает все привилегированные инструкции (ring 0) и выполняет их вместо гостевой ОС, транслируя в безопасные вызовы. Это принципиально отличается от аппаратной виртуализации, использующей расширения CPU (Intel VT-x, AMD-V).

Как работает

Ключевая техника программной виртуализации — бинарная трансляция (binary translation). Гипервизор динамически перекомпилирует машинный код гостевой ОС: непривилегированные инструкции выполняются напрямую, привилегированные — заменяются безопасными эквивалентами. VMware использовала эту технику до 2006 года, до повсеместного распространения Intel VT-x.

Альтернативный подход — паравиртуализация: гостевая ОС модифицируется и знает о виртуализации, используя специальный API (hypercalls) для взаимодействия с гипервизором. Xen и ранние версии KVM применяли паравиртуализацию для дисков и сети (virtio-драйверы) даже при наличии аппаратной виртуализации CPU.

QEMU — наиболее известный программный эмулятор: он может эмулировать x86, ARM, MIPS, RISC-V и другие архитектуры полностью программно, без аппаратной поддержки. Это позволяет запускать ARM-ОС на x86-хосте. В связке с KVM: KVM использует аппаратную виртуализацию для CPU, а QEMU — для эмуляции устройств (диски, сеть, USB).

История

Первые работы по виртуализации появились в IBM в 1960-х годах для мейнфреймов. Виртуализация x86-архитектуры через программную эмуляцию была реализована VMware (основана в 1998 году) — компания разработала технику бинарной трансляции для x86, который изначально не поддерживал виртуализацию. Intel анонсировала VT-x в 2005 году (Pentium 4, Prescott), AMD — AMD-V в том же году. К 2006 году аппаратная виртуализация стала стандартом, и роль чистой программной эмуляции снизилась до нишевых сценариев (тестирование разных архитектур).

Виды программной виртуализации

  • Полная эмуляция — QEMU без KVM: эмулирует всё оборудование, медленно, но работает на любом процессоре.
  • Бинарная трансляция — VMware Workstation (до VT-x): динамическая перекомпиляция привилегированных инструкций.
  • Паравиртуализация — Xen PV, KVM с virtio: гостевая ОС знает о виртуализации, использует оптимизированные драйверы.

На что обращать внимание

Программная виртуализация значительно медленнее аппаратной: накладные расходы достигают 30–50% для CPU-интенсивных задач. В продакшн-хостинге используется только аппаратная виртуализация (KVM, VMware ESXi). Программная нужна для: кроссплатформенного тестирования, эмуляции встраиваемых систем, анализа вредоносного ПО в изолированной среде.

Типичные ошибки и ограничения

Программную виртуализацию часто путают с паравиртуализацией. Паравиртуализация — это модифицированная гостевая ОС с hypercall-интерфейсом, она эффективнее программной эмуляции (накладные расходы 5–15%). Полная программная виртуализация (QEMU без KVM) несёт накладные расходы 30–50% для CPU-задач. Ещё одна ошибка — запуск QEMU без аппаратного ускорения KVM: убедитесь, что процессор поддерживает Intel VT-x или AMD-V и что модуль kvm_intel/kvm_amd загружен (lsmod | grep kvm). Без этого производительность ВМ будет неприемлемой для любых задач.

Другие термины