Назад | Перейти на главную страницу

Поддерживает ли Intel VT-x (или AMD Pacifica / AMD V) настоящую виртуализацию?

Я до сих пор не понимаю, как работают механизмы виртуализации.

Я понимаю, почему архитектура x86 сама по себе является / не была виртуализированной и почему другие архитектуры (и почему архитектура 68k была за исключением самого MC68000 и т. Д.).

А потом я прочитал о Intel VT-x и AMD V, которые добавляют возможности виртуализации в x86.

Однако виртуализированный ЦП выглядит иначе, чем физический ЦП; а именно физический ЦП имеет VT-x, а виртуальный ЦП - нет.

Хотя это не практическая проблема (ни одна операционная система, которую обычно хотят запускать на виртуальной машине, не требует VT-x), это заставляет меня задаться вопросом, является ли это реальной виртуализацией.

80386 уже имел возможность виртуализировать процессор с меньшим количеством функций, чем сам 80386, виртуальный режим x86. Является ли VT-x просто еще одним подобным слоем (я полагаю, кольцо -1) или это настоящая виртуализация?

(Что произойдет, если кто-то захочет виртуализировать системы, использующие VT-x? Разве настоящая виртуализация не должна допускать неограниченные уровни виртуализации?)

Простите за тупой вопрос. Вернее, извините за теоретический, а не практический вопрос.

Обновление: я сделал этот рисунок, чтобы попытаться лучше понять все это:

http://www.netneurotic.net/bin/VMM.png

Я понимаю, почему архитектура x86 не может быть виртуализирована сама по себе.

Это совсем не так. Его можно виртуализировать с помощью двоичного перевода или, что более часто называют полной виртуализацией. Вы эмулируете каждый компонент традиционного компьютера с помощью программного обеспечения, установленного поверх ОС.

А потом я прочитал о Intel VT-x и AMD V, которые добавляют возможности виртуализации в x86.

Вернее, добавляет дополнительные возможности виртуализации. Если быть точным, он добавляет расширения процессора, которые позволяют быстрее обрабатывать запросы виртуализации. Он также добавляет -1 кольцо для 64-битного процессора, поскольку количество колец уменьшилось до 2 с AMD64.

Вы можете виртуализировать на x86, используя «полную виртуализацию» (Virtual PC, VirtualBox) или паравиртуализацию (Xen, Hyper-V). Intel VT / AMD-V позволяет ускорить виртуализацию и выполнять «виртуализацию с аппаратной поддержкой».

Я не знаю, что вы имеете в виду под реальной виртуализацией ... любой тип виртуализации реальн, они позволяют вам иметь более одной ОС на одном компьютере. В этом суть виртуализации.

Надеюсь, это было ясно. Не стесняйтесь комментировать, если вам нужна дополнительная информация.

Изменить: если вы действительно хотите узнать об этом больше, получите эта книга. Это научило меня всему.

Вы можете объяснить, как именно Intel VT / AMD-V ускоряет виртуализацию?

Они упрощают работу гипервизора за счет реализации на процессоре технологий VMWare et. al. пришлось делать в их программном обеспечении для двоичного перевода. Для получения дополнительной информации об этом у Intel есть несколько хороших страниц:

http://www.intel.com/technology/itj/2006/v10i3/1-hardware/6-vt-x-vt-i-solutions.htm

Есть несколько областей, в которых это упрощает. Согласно вышеизложенному:

  • Перевод адресов Таблица пространств памяти, представленная операционной системе, должна была быть искусственно сегментирована на ЦП без VT. что было сделано программно. Расширения позволяют ЦП напрямую виртуализировать пространство памяти виртуальной машины, разрешая использование нескольких линейных адресных пространств. До этих расширений это выполнялось на уровне двоичной трансляции.
  • Уровни привилегий ЦП Расширения позволяют гостям фактически запускать свой код на правильном кольцевом уровне. Перед расширениями код, предназначенный для запуска в кольце 0, фактически запускался в кольце 1 или 3 с помощью подделки, обеспечиваемой уровнем двоичной трансляции программного обеспечения. Расширения позволяют гостям запускать свой код на самом деле на их правильном кольцевом уровне, обеспечивая при этом меры безопасности на случай выхода из их виртуальной машины.
  • Прерывание виртуализации Позволяя гостевым виртуальным машинам обрабатывать свои собственные прерывания, это позволяет гипервизору не вмешиваться в каждое отдельное прерывание. Это заставляет гостей бегать быстрее.

Эти три вещи значительно упрощают написание гипервизора, и почему подобные KVM и Xen сначала поддерживали только «полную» виртуализацию на процессорах VT.

VT-x и Pacifica ускоряют виртуализацию. Эмулированное ускорение - бесполезное упражнение.

VT-x на самом деле дает вам еще больше функций. VMware ESX не может виртуализировать 64-разрядные гостевые системы без VT-x, поскольку EM64T / Intel64 не поддерживает сегментированную память, которая была необходима для двоичной трансляции VMware. AMD64 Поддерживает сегментацию, за исключением процессоров Opteron Rev C. AMD осознала ошибку и исправила ее, а Intel решила этого не делать.