Я до сих пор не понимаю, как работают механизмы виртуализации.
Я понимаю, почему архитектура x86 сама по себе является / не была виртуализированной и почему другие архитектуры (и почему архитектура 68k была за исключением самого MC68000 и т. Д.).
А потом я прочитал о Intel VT-x и AMD V, которые добавляют возможности виртуализации в x86.
Однако виртуализированный ЦП выглядит иначе, чем физический ЦП; а именно физический ЦП имеет VT-x, а виртуальный ЦП - нет.
Хотя это не практическая проблема (ни одна операционная система, которую обычно хотят запускать на виртуальной машине, не требует VT-x), это заставляет меня задаться вопросом, является ли это реальной виртуализацией.
80386 уже имел возможность виртуализировать процессор с меньшим количеством функций, чем сам 80386, виртуальный режим x86. Является ли VT-x просто еще одним подобным слоем (я полагаю, кольцо -1) или это настоящая виртуализация?
(Что произойдет, если кто-то захочет виртуализировать системы, использующие VT-x? Разве настоящая виртуализация не должна допускать неограниченные уровни виртуализации?)
Простите за тупой вопрос. Вернее, извините за теоретический, а не практический вопрос.
Обновление: я сделал этот рисунок, чтобы попытаться лучше понять все это:
Я понимаю, почему архитектура 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
Есть несколько областей, в которых это упрощает. Согласно вышеизложенному:
Эти три вещи значительно упрощают написание гипервизора, и почему подобные KVM и Xen сначала поддерживали только «полную» виртуализацию на процессорах VT.
VT-x и Pacifica ускоряют виртуализацию. Эмулированное ускорение - бесполезное упражнение.
VT-x на самом деле дает вам еще больше функций. VMware ESX не может виртуализировать 64-разрядные гостевые системы без VT-x, поскольку EM64T / Intel64 не поддерживает сегментированную память, которая была необходима для двоичной трансляции VMware. AMD64 Поддерживает сегментацию, за исключением процессоров Opteron Rev C. AMD осознала ошибку и исправила ее, а Intel решила этого не делать.