Как включить функцию виртуализации в bios. VT-x и VT-d: что это такое в биосе и зачем нужно

Как включить функцию виртуализации в bios. VT-x и VT-d: что это такое в биосе и зачем нужно

17.02.2024

Напрямую. Гостевая система не зависит от архитектуры хостовой платформы и реализации платформы виртуализации.

Аппаратная виртуализация обеспечивает производительность, сравнимую с производительностью невиртуализованной машины, что дает виртуализации возможность практического использования и влечет её широкое распространение. Наиболее распространены технологии виртуализации Intel -VT и AMD -V.

Intel VT (Intel Virtualization Technology)

VT-x

Ранее известная под кодовым названием «Vanderpool», VT-x представляет собой технологию виртуализации Intel на платформе x86. 13 ноября 2005 года Intel выпустила две модели Pentium 4 (модели 662 и 672), которые стали первыми процессорами, поддерживающими VT-x. Флаг поддержки VT-x - «vmx»; в Linux проверяется командой cat /proc/cpuinfo , в Mac OS X - sysctl machdep.cpu.features .

Intel начала включать технологию виртуализации Extended Page Table (EPT) для страничных таблиц , начиная с процессоров архитектуры Nehalem , выпущенных в 2008 году .

Начиная с архитектуры Haswell , объявленной в 2013 году, Intel начала включать затенение VMCS - технологию, ускоряющую вложенную виртуализацию гипервизоров . VMCS - структура управления виртуальной машины (virtual machine control structure) - структура данных в памяти, существующая в точности в одном экземпляре на одну виртуальную машину и управляемая гипервизором. С каждым изменением контекста выполнения между разными ВМ структура данных VMCS восстанавливается для текущей виртуальной машины, определяя состояние виртуального процессора ВМ. Если используется больше гипервизора или используются вложенные гипервизоры, необходимо многократное затенение VMCS. Аппаратная поддержка затенения делает управление VMSC более эффективным.

VT-d

VT-d (Virtualization technology for directed I/O) - технология виртуализации ввода-вывода, созданная корпорацией Intel в дополнение к её технологии виртуализации вычислений (), известной под кодовым названием Vanderpool. Виртуализация ввода-вывода позволяет пробрасывать (pass-through) устройства на шине PCI (и более современных подобных шинах) в гостевую ОС , таким образом, что она может работать с ним с помощью своих штатных средств . Чтобы такое было возможно, в логических схемах системной платы используется специальное устройство управления памятью ввода-вывода (IOMMU), работающее аналогично MMU центрального процессора, используя таблицы страниц и специальную таблицу отображения DMA (DMA remapping table - DMAR), которую гипервизор получает от BIOS через ACPI . Отображение DMA необходимо, поскольку гипервизор ничего не знает о специфике работы устройства с памятью по физическим адресам, которые известны лишь драйверу. С помощью DMAR он создает таблицы отображения таким образом, что драйвер гостевой ОС видит виртуальные адреса IOMMU аналогично тому, как бы он видел физические без него и гипервизора.

Intel Virtualization Technology for Directed I/O (VT-d) - это следующий важный шаг на пути к всеобъемлющей аппаратной поддержке виртуализации платформ на базе Intel. VT-d расширяет возможности технологии Virtualization Technology (VT), существующей в IA-32 (VT-x) и Itanium (VT-i), и добавляет поддержку виртуализации новых устройств ввода-вывода.

Поддержка аппаратным обеспечением

Поддержка программным обеспечением

  • Гипервизор Xen поддерживает DMAR начиная с версии 3.3 для аппаратно-виртуализуемых доменов. Для паравиртуальных доменов отображение DMA не требуется.
  • В ближайшем будущем заявлена поддержка технологии ПО Oracle VirtualBox .
  • Ядро Linux экспериментально поддерживает DMAR начиная с версии 2.6.28, что позволяет встроенному гипервизору (kvm) давать доступ виртуальным машинам к PCI-устройствам.
  • Поддержка Intel VT-d есть в Parallels Workstation 4.0 Extreme и в Parallels Server 4 Bare Metal

Бурное развитие рынка технологий виртуализации за последние несколько лет произошло во многом благодаря увеличению мощностей аппаратного обеспечения, позволившего создавать по-настоящему эффективные платформы виртуализации, как для серверных систем, так и для настольных компьютеров. Технологии виртуализации позволяют запускать на одном физическом компьютере (хосте) несколько виртуальных экземпляров операционных систем (гостевых ОС) в целях обеспечения их независимости от аппаратной платформы и сосредоточения нескольких виртуальных машин на одной физической. Виртуализация предоставляет множество преимуществ, как для инфраструктуры предприятий, так и для конечных пользователей. За счет виртуализации обеспечивается существенная экономия на аппаратном обеспечении, обслуживании, повышается гибкость ИТ-инфраструктуры, упрощается процедура резервного копирования и восстановления после сбоев. Виртуальные машины, являясь независимыми от конкретного оборудования единицами, могут распространяться в качестве предустановленных шаблонов, которые могут быть запущены на любой аппаратной платформе поддерживаемой архитектуры.

До недавнего времени усилия в области виртуализации операционных систем были сосредоточены в основном в области программных разработок. В 1998 году компания VMware впервые серьезно обозначила перспективы развития виртуальных систем, запатентовав программные техники виртуализации. Благодаря усилиям VMware, а также других производителей виртуальных платформ, и возрастающим темпам совершенствования компьютерной техники, корпоративные и домашние пользователи увидели преимущества и перспективы новой технологии, а рынок средств виртуализации начал расти стремительными темпами. Безусловно, такие крупные компании, как Intel и AMD, контролирующие большую часть рынка процессоров, не могли оставить эту перспективную технологию без внимания. Компания Intel первая увидела в новой технологии источник получения технологического превосходства над конкурентами и начала работу над усовершенствованием x86 архитектуры процессоров в целях поддержки платформ виртуализации. Вслед за Intel компания AMD также присоединилась к разработкам в отношении поддержки аппаратной виртуализации в процессорах, чтобы не потерять позиции на рынке. В данный момент обе компании предлагают модели процессоров, обладающих расширенным набором инструкций и позволяющих напрямую использовать ресурсы аппаратуры в виртуальных машинах.

Развитие аппаратных техник виртуализации

Идея аппаратной виртуализации не нова: впервые она была воплощена в 386-х процессорах и носила название V86 mode. Этот режим работы 8086-го процессора позволял запускать параллельно несколько DOS-приложений. Теперь аппаратная виртуализация позволяет запускать несколько независимых виртуальных машин в соответствующих разделах аппаратного пространства компьютера. Аппаратная виртуализация является логическим продолжением эволюции уровней абстрагирования программных платформ - от многозадачности до уровня виртуализации:

Преимущества аппаратной виртуализации над программной

Программная виртуализация в данный момент превалирует над аппаратной на рынке технологий виртуализации ввиду того, что долгое время производители процессоров не могли должным образом реализовать поддержку виртуализации. Процесс внедрения новой технологии в процессоры требовал серьезного изменения их архитектуры, введения дополнительных инструкций и режимов работы процессоров. Это рождало проблемы обеспечения совместимости и стабильности работы, которые были полностью решены в 2005-2006 годах в новых моделях процессоров. Несмотря на то, что программные платформы весьма продвинулись в отношении быстродействия и предоставления средств управления виртуальными машинами, технология аппаратной виртуализации имеет некоторые неоспоримые преимущества перед программной:

  • Упрощение разработки платформ виртуализации за счет предоставления аппаратных интерфейсов управления и поддержки виртуальных гостевых систем. Это способствует появлению и развитию новых платформ виртуализации и средств управления, в связи с уменьшением трудоемкости и времени их разработки.
  • Возможность увеличения быстродействия платформ виртуализации. Поскольку управление виртуальными гостевыми системами производится с помощью небольшого промежуточного слоя программного обеспечения (гипервизора) напрямую, в перспективе ожидается увеличение быстродействия платформ виртуализации на основе аппаратных техник.
  • Возможность независимого запуска нескольких виртуальных платформ с возможностью переключения между ними на аппаратном уровне. Несколько виртуальных машин могут работать независимо, каждая в своем пространстве аппаратных ресурсов, что позволит устранить потери быстродействия на поддержание хостовой платформы, а также увеличить защищенность виртуальных машин за счет их полной изоляции.
  • Отвязывание гостевой системы от архитектуры хостовой платформы и реализации платформы виртуализации. С помощью технологий аппаратной виртуализации возможен запуск 64-битных гостевых систем из 32-битных хостовых системах, с запущенными в них 32-битными средами виртуализации.

Как работает аппаратная виртуализация

Необходимость поддержки аппаратной виртуализации заставила производителей процессоров несколько изменить их архитектуру за счет введения дополнительных инструкций для предоставления прямого доступа к ресурсам процессора из гостевых систем. Этот набор дополнительных инструкций носит название Virtual Machine Extensions (VMX). VMX предоставляет следующие инструкции: VMPTRLD, VMPTRST, VMCLEAR, VMREAD, VMREAD, VMWRITE, VMCALL, VMLAUNCH, VMRESUME, VMXON и VMXOFF.

Процессор с поддержкой виртуализации может работать в двух режимах root operation и non-root operation. В режиме root operation работает специальное программное обеспечение, являющееся «легковесной» прослойкой между гостевыми операционными системами и оборудованием - монитор виртуальных машин (Virtual Machine Monitor, VMM), носящий также название гипервизор (hypervisor). Слово «гипервизор» появилось интересным образом: когда-то очень давно, операционная система носила название «supervisor», а программное обеспечение, находящееся «под супервизором», получило название «гипервизор».

Чтобы перевести процессор в режим виртуализации, платформа виртуализации должна вызвать инструкцию VMXON и передать управление гипервизору, который запускает виртуальную гостевую систему инструкцией VMLAUNCH и VMRESUME (точки входа в виртуальную машину). Virtual Machine Monitor может выйти из режима виртуализации процессора, вызвав инструкцию VMXOFF.

Каждая из гостевых операционных систем запускается и работает независимо от других и является изолированной с точки зрения аппаратных ресурсов и безопасности.

Отличие аппаратной виртуализации от программной

Классическая архитектура программной виртуализации подразумевает наличие хостовой операционной системы, поверх которой запускается платформа виртуализации, эмулирующая работу аппаратных компонентов и управляющая аппаратными ресурсами в отношении гостевой операционной системы. Реализация такой платформы достаточно сложна и трудоемка, присутствуют потери производительности, в связи с тем, что виртуализация производится поверх хостовой системы. Безопасность виртуальных машин также находится под угрозой, поскольку получение контроля на хостовой операционной системой автоматически означает получение контроля над всеми гостевыми системами.

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

Недостатки аппаратной виртуализации

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

В начале 2006 года в лабораториях Microsoft Research был создан руткит под кодовым названием SubVirt, поражающий хостовые системы Windows и Linux и делающий свое присутствие практически не обнаруживаемым. Принцип действия этого руткита заключался в следующем:

  1. Через одну из уязвимостей в операционной системе компьютера вредоносное программное обеспечение получает административный доступ.
  2. После этого, руткит начинает процедуру миграции физической платформы на виртуальную, по окончании которой происходит запуск виртуализованной платформы посредством гипервизора. При этом для пользователя ничего не меняется, все продолжает работать, как и раньше, а все средства и службы, необходимые для доступа к гипервизору извне (например, терминального доступа), находятся за пределами виртуализованной системы.
  3. Антивирусное программное обеспечение после осуществления процедуры миграции не может обнаружить вредоносный код, поскольку он находится за пределами виртуализованной системы.

Наглядно эта процедура выглядит так:

Однако, не стоит преувеличивать опасность. Разработать вредоносную программу, использующую технологии виртуализации все равно гораздо сложнее, нежели, пользуясь «традиционными» средствами, эксплуатирующими различные уязвимости в операционных системах. При этом главное допущение, которое делается теми, кто утверждает, что такое вредоносное ПО сложнее в обнаружении и более того, может не использовать «дырки» в ОС, действуя исключительно «в рамках правил», состоит в том, что якобы виртуализованная операционная система не в состоянии обнаружить, что она запущена на виртуальной машине, что есть исходно неверная посылка. Соответственно, антивирусное обеспечение имеет все возможности обнаружить факт заражения. А, следовательно, пропадает и смысл разрабатывать столь ресурсоемкий и сложный троян, учитывая наличие куда более простых способов вторжения.

Технологии виртуализации компаний Intel и AMD

Компании Intel и AMD, являясь ведущими производителями процессоров для серверных и настольных платформ, разработали техники аппаратной виртуализации для их использования в платформах виртуализации. Эти техники не обладают прямой совместимостью, но выполняют в основном схожие функции. Обе они предполагают наличие гипервизора, управляющего не модифицированными гостевыми системами, и имеют возможности для разработки платформ виртуализации без необходимости эмуляции аппаратуры. В процессорах обеих компаний, поддерживающих виртуализацию, введены дополнительные инструкции для их вызова гипервизором в целях управления виртуальными системами. В данный момент группа, занимающаяся исследованием возможностей аппаратных техник виртуализации, включает в себя компании AMD, Intel, Dell, Fujitsu Siemens, Hewlett-Packard, IBM, Sun Microsystems и VMware.

Виртуализация Intel

Компания Intel официально объявила о запуске технологии виртуализации в начале 2005 года на конференции Intel Developer Forum Spring 2005. Новая технология получила кодовое название Vanderpool и официальное Intel Virtualization Technology (сокращенно Intel VT). Технология Intel VT содержит в себе некоторое множество техник различного класса, имеющих номера версий VT-x, где x - литер, указывающий на подвид аппаратной техники. Была заявлена поддержка новой технологии в процессорах Pentium 4, Pentium D, Xeon, Core Duo и Core 2 Duo. Intel также опубликовала спецификации на Intel VT для Itanium-based процессоров, где технология виртуализации фигурировала под кодовым именем «Silvervale» и версией VT-i. Однако, начиная с 2005 года, новые модели процессоров Itanium не поддерживают x86 инструкции аппаратно, и x86-виртуализация может быть использована на архитектуре IA-64 только с помощью эмуляции.

Для включения технологии Intel VT в компьютерные системы, компания Intel сотрудничала с производителями материнских плат, BIOS и периферийного оборудования, чтобы обеспечить совместимость Intel VT с существующими системами. Во многих компьютерных системах технология аппаратной виртуализации может быть выключена в BIOS. Спецификации на Intel VT говорят, что для поддержки этой технологии не достаточно одного лишь поддерживающего ее процессора, необходимо также наличие соответствующих чипсетов материнской платы, BIOS и программного обеспечения, использующего Intel VT. Список поддерживающих Intel VT процессоров приведен далее:

  • Intel® 2 Core™ Duo Extreme processor X6800
  • Intel® 2 Core™ Duo processor E6700
  • Intel® 2 Core™ Duo processor E6600
  • Intel® 2 Core™ Duo processor E6400 (E6420)
  • Intel® 2 Core™ Duo processor E6300 (E6320)
  • Intel® Core™ Duo processor T2600
  • Intel® Core™ Duo processor T2500
  • Intel® Core™ Duo processor T2400
  • Intel® Core™ Duo processor L2300
  • Intel® Pentium® processor Extreme Edition 965
  • Intel® Pentium® processor Extreme Edition 955
  • Intel® Pentium® D processor 960
  • Intel® Pentium® D processor 950
  • Intel® Pentium® D processor 940
  • Intel® Pentium® D processor 930
  • Intel® Pentium® D processor 920
  • Intel® Pentium® 4 processor 672
  • Intel® Pentium® 4 processor 662

Процессоры для ноутбуков:

  • Intel® 2 Core™ Duo processor T7600
  • Intel® 2 Core™ Duo processor T7400
  • Intel® 2 Core™ Duo processor T7200
  • Intel® 2 Core™ Duo processor T5600
  • Intel® 2 Core™ Duo processor L7400
  • Intel® 2 Core™ Duo processor L7200
  • Intel® 2 Core™ Duo processor L7600
  • Intel® 2 Core™ Duo processor L7500

Процессоры для серверных платформ:

  • Intel® Xeon® processor 7041
  • Intel® Xeon® processor 7040
  • Intel® Xeon® processor 7030
  • Intel® Xeon® processor 7020
  • Intel® Xeon® processor 5080
  • Intel® Xeon® processor 5063
  • Intel® Xeon® processor 5060
  • Intel® Xeon® processor 5050
  • Intel® Xeon® processor 5030
  • Intel® Xeon® processor 5110
  • Intel® Xeon® processor 5120
  • Intel® Xeon® processor 5130
  • Intel® Xeon® processor 5140
  • Intel® Xeon® processor 5148
  • Intel® Xeon® processor 5150
  • Intel® Xeon® processor 5160
  • Intel® Xeon® processor E5310
  • Intel® Xeon® processor E5320
  • Intel® Xeon® processor E5335
  • Intel® Xeon® processor E5345
  • Intel® Xeon® processor X5355
  • Intel® Xeon® processor L5310
  • Intel® Xeon® processor L5320
  • Intel® Xeon® processor 7140M
  • Intel® Xeon® processor 7140N
  • Intel® Xeon® processor 7130M
  • Intel® Xeon® processor 7130N
  • Intel® Xeon® processor 7120M
  • Intel® Xeon® processor 7120N
  • Intel® Xeon® processor 7110M
  • Intel® Xeon® processor 7110N
  • Intel® Xeon® processor X3220
  • Intel® Xeon® processor X3210

Необходимо отметить, что следующие четыре процессора не поддерживают технологию Intel VT:

  • Intel® 2 Core™ Duo processor E4300
  • Intel® 2 Core™ Duo processor E4400
  • Intel® 2 Core™ Duo processor T5500
  • Intel® Pentium® D processor 9x5 (D945)

Компания Intel планирует также развивать технологию под названием Virtualization for Directed I/O к Intel VT, имеющую версию VT-d. На данный момент известно, что это существенные изменения в архитектуре ввода-вывода, которые позволят улучшить защищенность, робастность и производительность виртуальных платформ, использующих аппаратные техники виртуализации.

Виртуализация AMD

Компания AMD, так же, как и компания Intel, не так давно взялась за доработку архитектуры процессоров с целью поддержки виртуализации. В мае 2005 года компания AMD объявила о начале внедрения поддержки виртуализации в процессоры. Официальное название, которое получила новая технология - AMD Virtualization (сокращенно AMD-V), а ее внутреннее кодовое имя - AMD Pacifica. Технология AMD-V является логическим продолжением технологии Direct Connect для процессоров AMD64, направленной на повышение производительности компьютерных систем за счет тесной прямой интеграции процессора с другими компонентами аппаратного обеспечения.

В списке далее приведены процессоры, поддерживающие функции аппаратной виртуализации AMD-V. Поддержка этих функций должна работать во всех процессорах серии AMD-V для настольных компьютеров под Socket AM2, начиная со степпинга F. Необходимо также отметить, что процессоры Sempron не поддерживают аппаратную виртуализацию.

Процессоры для настольных платформ:

  • Athlon™ 64 3800+
  • Athlon™ 64 3500+
  • Athlon™ 64 3200+
  • Athlon™ 64 3000+
  • Athlon™ 64 FX FX-62
  • Athlon™ 64 FX FX-72
  • Athlon™ 64 FX FX-74
  • Athlon™ 64 X2 Dual-Core 6000+
  • Athlon™ 64 X2 Dual-Core 5600+
  • Athlon™ 64 X2 Dual-Core 5400+
  • Athlon™ 64 X2 Dual-Core 5200+
  • Athlon™ 64 X2 Dual-Core 5000+
  • Athlon™ 64 X2 Dual-Core 4800+
  • Athlon™ 64 X2 Dual-Core 4600+
  • Athlon™ 64 X2 Dual-Core 4400+
  • Athlon™ 64 X2 Dual-Core 4200+
  • Athlon™ 64 X2 Dual-Core 4000+
  • Athlon™ 64 X2 Dual-Core 3800+

Для ноутбуков поддерживаются процессоры с брендом Turion 64 X2:

  • Turion™ 64 X2 TL-60
  • Turion™ 64 X2 TL-56
  • Turion™ 64 X2 TL-52
  • Turion™ 64 X2 TL-50

Для серверных платформ поддерживаются следующие процессоры Opteron:

  • Opteron 1000 Series
  • Opteron 2000 Series
  • Opteron 8000 Series

Программное обеспечение, поддерживающее аппаратную виртуализацию

На данный момент, абсолютное большинство вендоров программных платформ виртуализации заявило о поддержке технологий аппаратной виртуализации Intel и AMD. Виртуальные машины на этих платформах могут быть запущены при поддержке аппаратной виртуализации. Кроме того, во многих операционных системах, в дистрибутив которых включены программные платформы паравиртуализации, такие как Xen или Virtual Iron, аппаратная виртуализация позволит запускать неизмененные гостевые операционные системы. Так как паравиртуализация является одним из видов виртуализации, требующих модификации гостевой операционной системы, реализация в платформах паравиртуализации поддержки аппаратной виртуализации является для этих платформ весьма приемлемым решением, с точки зрения возможности запуска не модифицированных версий гостевых систем. В приведенной далее таблице перечислены основные популярные платформы виртуализации и программное обеспечение, поддерживающие технологии аппаратной виртуализации:

Платформа виртуализации или ПО Какие технологии поддерживает Примечание
Kernel-based Virtual Machine (KVM) Intel VT, AMD-V Виртуализация уровня экземпляров операционных систем под Linux.
Microsoft Virtual PC Intel VT, AMD-V Настольная платформа виртуализации для хостовых Windows-платформ.
Microsoft Virtual Server Intel VT, AMD-V Серверная платформа виртуализации для Windows. Версия с поддержкой аппаратной виртуализации, Microsoft Virtual Server 2005 R2 SP1, находится в состоянии беты. Ожидается во втором квартале 2007 г.
Parallels Workstation Intel VT, AMD-V Платформа виртуализации для Windows и Linux хостов.
VirtualBox Intel VT, AMD-V Настольная платформа виртуализации с открытым исходным кодом для Windows, Linux и Mac OS. По умолчанию поддержка аппаратной виртуализации выключена, поскольку по исследованиям экспертов, на данный момент аппаратная виртуализация медленнее программной
Virtual Iron Intel VT, AMD-V Virtual Iron 3.5 является первой платформой виртуализации, использующей аппаратные техники, которая позволяет запускать 32-битные и 64-битные неизмененные гостевые системы практически без потери производительности.
VMware Workstation и VMware Server Intel VT, AMD-V Для запуска 64-х битных гостевых систем требуется поддержка Intel VT (так же как и для VMware ESX Server), для 32-битных же гостевых ОС по умолчанию поддержка IntelVT отключена по тем же причинам, что и у VirtualBox.
Xen Intel VT, AMD-V Платформа виртуализации Xen с открытым исходным кодом позволяет запускать неизмененные гостевые системы, используя аппаратные техники виртуализации.

Аппаратная виртуализация сегодня

Компания VMware, входящая в исследовательскую группу аппаратных техник виртуализации, в конце 2006 года провела исследование в отношении собственной программной виртуализации в сравнении с аппаратными технологиями виртуализации компании Intel. В документе «A Comparison of Software and Hardware Techniques for x86 Virtualization» были зафиксированы результаты этого исследования (на процессоре 3.8 GHz Intel Pentium 4 672 с отключенной технологией Hyper-Threading). Один из экспериментов проводился с помощью систем тестов SPECint2000 и SPECjbb2005, являющихся стандартом де-факто для оценки производительности компьютерных систем. В качестве гостевой системы использовалась ОС Red Hat Enterprise Linux 3, управляемая программным и аппаратным гипервизором. Ожидалось, что аппаратная виртуализация даст коэффициент производительности около ста процентов в отношении нативного запуска операционной системы. Однако результаты оказались весьма неожиданными: в то время как программный гипервизор без использования аппаратных техник виртуализации давал 4 процента потерь производительности в отношении нативного запуска, аппаратный гипервизор, в целом, терял 5 процентов производительности. Результаты этого теста приведены на рисунке далее:

Выводы

Поддержка технологий аппаратной виртуализации в процессорах открывает широкие перспективы по использованию виртуальных машин в качестве надежных, защищенных и гибких инструментов для повышения эффективности виртуальных инфраструктур. Наличие поддержки аппаратных техник виртуализации в процессорах не только серверных, но и настольных систем, говорит о серьезности намерений производителей процессоров в отношении всех сегментов рынка пользователей компьютерных систем. Использование аппаратной виртуализации в перспективе должно уменьшить потери производительности при запуске нескольких виртуальных машин на одном физическом сервере. Безусловно, аппаратная виртуализация повысит защищенность виртуальных систем в корпоративных средах. Сейчас простота разработки платформ виртуализации с использованием аппаратных техник привела к появлению новых игроков на рынке средств виртуализации. Вендоры систем паравиртуализации широко применяют аппаратную виртуализацию для запуска не модифицированных гостевых систем. Дополнительным преимуществом аппаратных техник виртуализации является возможность запуска 64-битных гостевых систем на 32-битных версиях платформ виртуализации (например, VMware ESX Server).

Не стоит воспринимать результаты производительности, как единственно верные. Объективная оценка производительности различных аппаратных и программных платформ для виртуализации является нетривиальной задачей, упомянутая рабочая группа в составе SPEC работает над созданием набора стандартных методов для оценки таких систем. На сегодня можно отметить, что средства виртуализации от AMD являются технически более совершенными, нежели реализованные Intel. Многое зависит и от используемого ПО, к примеру, в отличие от VMWare, есть значительно более «отзывчивые» к аппаратной поддержке среды, например, Xen 3.0.

Сегодня все большее количество современных компьютерных систем обращают свое внимание на технологии виртуализации. Правда, не все достаточно четко себе представляют, что это такое, зачем это нужно и как решать вопросы ее включения или практического использования. Сейчас будет рассмотрено, как в БИОСе включить виртуализацию простейшим методом. Сразу отметим, что эта методика применима абсолютно ко всем существующим системам, в частности, к BIOS и сменившей его системе UEFI.

Что такое виртуализация и зачем она нужна?

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

Сама технология предназначена для использования в любой операционной системе так называемых виртуальных машин, которые могут эмулировать настоящие компьютеры со всеми их «железными» и программными компонентами. Иными словами, в основной системе можно создать некий виртуальный компьютер с подбором процессора, оперативной памяти, видео- и саундкартой, сетевым адаптером, жестким диском, оптическим носителем и еще бог знает с чем, включая установку гостевой (дочерней) «операционки», который ничем не будет отличаться от реального компьютерного терминала.

Разновидности технологий

Если кто не знает, технологии виртуализации были созданы ведущими производителями процессоров - корпорациями Intel и AMD, которые и сегодня не могут поделить пальму первенства в этой области. На заре эпохи созданный гипервизор (программное обеспечение для управления виртуальными машинами) от Intel не отвечал всем требованиям по уровню производительности, поэтому-то и начались разработки поддержки виртуальных систем, которые должны были быть «зашиты» в самих процессорных чипах.

У Intel данная технология получила название Intel-VT-x, а у AMD – AMD-V. Таким образом, поддержка оптимизировала работу центрального процессора, не влияя на основную систему.

Само собой разумеется, что включать данную опцию в предварительных настройках BIOS следует только в том случае, если на физической машине предполагается использование машины виртуальной, например, для тестирования программ или прогнозирования поведения компьютерной системы с различными «железными» компонентами после установки той или иной операционной системы. В противном случае такую поддержку можно и не задействовать. К тому же по умолчанию она вообще выключена и, как уже говорилось, на производительность работы основной системы не оказывает абсолютно никакого влияния.

Вход в БИОС

Что же касается систем BIOS или UEFI, в любом компьютере или ноутбуке они есть, причем независимо от сложности установленного оборудования. Сам БИОС на компьютере представляет собой небольшой чип на материнской плате, который отвечает за тестирование «железа» в момент включения терминала. В нем же, несмотря на память всего около 1 Мб, сохраняются основные настройки и характеристики оборудования.

В зависимости от версии BIOS или производителя, вход может осуществляться несколькими различными методами. Самым распространенным является использование клавиши Del сразу же после включения компьютера или ноутбука. Однако встречаются и другие методы, например, клавиши F2, F12 и т. д.

Как в БИОСе включить виртуализацию простейшим способом?

Теперь определимся с некоторыми основными параметрами и меню. Отталкиваемся от того, что вход в БИОС на компьютере уже произведен. Здесь имеется несколько основных разделов, но в данном случае нас интересует все, что относится к процессорному чипу.

Обычно такие опции содержатся в меню расширенных настроек (Advanced) или в разделе безопасности (Security). Называться они тоже могут по-разному, но, как правило, это что-то вроде Processor или BIOS Chipset (хотя могут встречаться и другие названия).

Итак, теперь вопрос, как в БИОСе включить виртуализацию, можно рассматривать вплотную. В вышеуказанных разделах имеется специальная строка Virtualization Technology (в случае Intel к основному названию добавляется название корпорации). При входе в соответствующее меню будут показаны два доступных параметра: Enabled и Disabled. Как уже понятно, первый – это включенный режим виртуализации, второй – полное отключение.

То же самое касается и системы UEFI, в которой влючение данной опции выполняется полностью аналогичным способом.

Теперь, когда применена установка БИОС на параметр включенного режима, остается только сохранить изменения (F10 или команда Save & Exit Setup), нажать клавишу подтверждения Y, соответствующую английскому слову Yes. Перезагрузка системы с вновь сохраненными параметрами стартует автоматически.

Что следует знать, кроме этого?

Как видим, процедура включения виртуализации в BIOS достаточно проста. Однако здесь следует учитывать некоторые тонкости, связанные с возможным отключением этой функции. Дело в том, что при использовании виртуальных машин вроде WMware Virtual Machine, Virtual PC, VirtualBox или даже «родного» модуля Microsoft под названием Hyper-V эта опция должна быть задействована в обязательном порядке даже при включенной поддержке компонентов Windows непосредственно в настройках системы.

Большей частью это касается более новых модификаций Windows, начиная с «семерки». В «экспишке» или «Висте» это обязательным условием не является. Хотя если такие «операционки» установлены на новейшем «железе», включение поддержки тоже может потребоваться. Впрочем, маловероятно, что пользователь на такую машину будет устанавливать морально устаревшую «операционку», которая не позволит «выжать» из компьютерного «железа» максимум того, на что оно способно. Так что лучше использовать новейшие «железные» компоненты в сочетании не только с самыми последними версиями операционных систем, но и даже с системами диагностики и управлениями UEFI, пришедшими на смену так долго служившему БИОСу.

fb.ru

Как включить аппаратную виртуализацию в BIOS? Virtualization Technology - технология аппаратной виртуализации гостевых ОС (с фото) - Настройка BIOS

Опция Virtualization Technology. Включение данной опции включает технологию аппаратной виртуализации, основанной на специальной процессорной архитектуре. В отличие от программной виртуализации, с помощью данной техники возможно использование изолированных гостевых систем (виртуальных машинах - VMware, Virtual PC и тд.), управляемых гипервизором напрямую. Гостевая система не зависит от архитектуры хостовой платформы и реализации платформы виртуализации.

На работу программ пользователя в стандартной операционной системе данная опция практически не влияет.

Значения опции:

Опция также может иметь другие названия:

  • Virtualization Technology
  • Vanderpool Technology
  • VT Technology
  • Virtualization

Примечание 1.Аппаратная виртуализация виртуализация с поддержкой специальной процессорной архитектуры. Аппаратная виртуализация обеспечивает производительность, сравнимую с производительностью невиртуализованной машины, что дает виртуализации возможность практического использования и влечет её широкое распространение. Наиболее распространены технологии виртуализации Intel-VT и AMD-V.

  1. В Intel VT (Intel Virtualization Technology) реализована виртуализация режима реальной адресации (режим совместимости с 8086). Соответствующая аппаратная виртуализация ввода-вывода - VT-d. Часто обозначается аббревиатурой VMX (Virtual Machine eXtension). Кодовое название - Vanderpool.
  2. AMD-V часто обозначается аббревиатурой SVM (Secure Virtual Machines). Кодовое название - Pacifica. Соответствующая технология виртуализации ввода-вывода - IOMMU. AMD-V проще и эффективнее, чем Intel VT. Поддержка AMD-V появилась в Xen 3.3.

Intel VT (Intel Virtualization Technology) - intel virtualization technology что это?

Intel VT - это аппаратная основа для программного создания виртуализации, через уменьшение ее размера, стоимости и сложности. Например, при использовании такими системами кэш-памяти, системе ввода-вывод. Применяется в основном пользователями в корпоративном, облачном, коммуникационном секторах.

VT-x 13 ноября 2005 года Intel выпустила две модели Pentium 4 (модели 662 и 672), которые стали первыми процессорами, поддерживающими VT-x ("Vanderpool"). VT-x представляет собой технологию виртуализации Intel режима реальной адресации на платформе x86 - VMX (Virtual Machine eXtension).

Реализована виртуализация режима реальной адресации (режим совместимости с 8086).

VT-d (Virtualization technology for directed I/O) - технология аппаратной виртуализации ввода-вывода, созданная корпорацией Intel в дополнение к её технологии виртуализации вычислений VT-x. Виртуализация ввода-вывода позволяет пробрасывать (pass-through) устройства на шине PCI (и более современных подобных шинах) в гостевую ОС, таким образом, что она может работать с ним с помощью своих штатных средств. Чтобы такое было возможно, в логических схемах системной платы используется специальное устройство управления памятью ввода-вывода (IOMMU), работающее аналогично MMU центрального процессора, используя таблицы страниц и специальную таблицу отображения DMA (DMA remapping table - DMAR), которую гипервизор получает от BIOS через ACPI. Отображение DMA необходимо, поскольку гипервизор ничего не знает о специфике работы устройства с памятью по физическим адресам, которые известны лишь драйверу. С помощью DMAR он создает таблицы отображения таким образом, что драйвер гостевой ОС видит виртуальные адреса IOMMU аналогично тому, как бы он видел физические без него и гипервизора.

Intel Virtualization Technology for Directed I/O (VT-d) - это следующий важный шаг на пути к всеобъемлющей аппаратной поддержке виртуализации платформ на базе Intel. VT-d расширяет возможности технологии Virtualization Technology (VT), существующей в IA-32 (VT-x) и Itanium (VT-i), и добавляет поддержку виртуализации новых устройств ввода-вывода. Ознакомиться подробнее с технической стороной вопроса можно здесь https://ru.wikipedia.org/wiki/

Программа Setup BIOS фирмы AWARD Software International Inc на системных платах GIGABYTE TECHNOLOGY

Virtualization значение по умолчанию

Возможное значение:

Обозначение опции BIOS Описание опции в БИОСе Переведенное значение опции БИОС

Hardware assisted VirtuaIization Technology which help improve performance of system running VirtuaI Machine Softwares.

Virtual Machine allows multiple OS on one conputer simultaneously.

Оборудование для помощи VirtuaIization - технология которая помогает повысить производительность системы, работающей на VirtuaI-машине.

Виртуальная машина позволяет запускать более производительно несколько ОС на одном компьютерные одновременно.

Не включать технологию аппаратной виртуализации, основанной на специальной процессорной архитектуре.

Включает технологию аппаратной виртуализации, основанной на специальной процессорной архитектуре.

Программа Aptio Setup Utility - BIOS фирмы American Megatrends Inc на системных платах Dell Inc.

Название данной опции у данного производителя в данной версии BIOS (ноутбук):

Virtualization значение по умолчанию

Возможное значение:

Программа BIOS Insydeh30 Setup Utility компании Insyde Software на на системных платах Hewlett-Packard Company (HP)

Название данной опции у данного производителя в данной версии BIOS:

Virtualization Technology значение по умолчанию

Данная опция находится на вкладке: «System Configuration»

www.NastrojkaBios.ru

Как проверить поддерживает ли ваш процессор аппаратную виртуализацию Intel VT-x/VT-d и AMD-V

На сегодняшний день известно, что поддержка аппаратной виртуализации Intel VT-x/VT-d и AMD-V необходима для работы виртуальных машин, таких как VirtualBox и VMware Workstation, а также для работы так называемых программ эмуляторов мобильных операционных систем, например для ОС Android.

В наше время почти все современные компьютеры имеют поддержку данной технологии, но есть конечно и такие которые не поддерживают. И для того чтобы узнать, имеет ли наш процессор поддержку данной технологии, мы для начало зайдем в BIOS нашего компьютера и посмотрим есть ли там интересующая нас настройка. Я добавил в статью несколько примеров того как выглядит пункт включения виртуализации в разных версиях BIOS. В основном включение этого параметра находится на вкладке advanced, далее как видно на картинке ниже, под названием intel virtualization technology и скрывается доказательство того, что данный компьютер поддерживает эту технологию.

В данной версии BIOS переходим во вкладку advanced BIOS features, где так же видим в пункте virtualization поддержку данной технологии.

И здесь в пункте advanced BIOS features видно, что аппаратная виртуализация поддерживается процессором.

Ну и последний вариант, где во вкладке advanced в пункте secure virtual machine mode, мы также может включить данную технологию.

Но бывают и такие случаи, что в BIOS-е нашего компьютера нет пункта включения аппаратной виртуализации secure virtual machine mode или intel virtualization technology, хотя как говорят, что тот процессор который стоит в вашем компьютере поддерживает данную технологию. Для того чтобы убедится в этом, нам поможет маленькая утилита под названием SecurAble, которая точно покажет поддерживает ли наш процессор аппаратную виртуализацию. Переходим на официальный сайт производителя по ссылке https://www.grc.com/securable.htm, где внизу нажимаем на пункт Download Now. Начнется загрузка, после запускаем программу, устанавливать её не надо, так как эта портативная версия.

После запуска, программа сразу покажет информацию о том поддерживает или не поддерживает технологию виртуализации ваш процессор. Увидеть это можно в третьем по счету блоке. Как вы уже догадались, если стоит надпись yes значит поддержка есть.

Если написано Locked OFF, это значит что, поддержка данной технологии есть, но её надо включить. А включается она, как мы уже знаем, в BIOS-е нашего компьютера.

Ну и если блок имеет надпись NO, значит технология аппаратной виртуализации не поддерживается вашим процессором.

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

Спасибо за внимание!

ITremont.info

Аппаратная виртуализация. Теория, реальность и поддержка в архитектурах процессоров

В данном посте я попытаюсь описать основания и особенности использования аппаратной поддержки виртуализации компьютеров. Начну с определения трёх необходимых условий виртуализации и формулировки теоретических оснований для их достижения. Затем перейду к описанию того, какое отражение теория находит в суровой реальности. В качестве иллюстраций будет кратко описано, как различные вендоры процессоров различных архитектур реализовали виртуализацию в своей продукции. В конце будет затронут вопрос рекурсивной виртуализации. Сперва - несколько определений, может быть, не совсем типичных для статей по данной тематике, но используемых в этой заметке.
  • Хозяин (англ. host) - аппаратная система, на которой запущен монитор виртуальных машин или симулятор.
  • Гость (англ.guest) - виртуальная или моделируемая система, запущенная под управлением монитора или симулятора. Также иногда именуется как целевая система (англ. target system).
Остальную терминологию я постараюсь определять по мере появления в тексте. Виртуализация представляла интерес ещё до изобретения микропроцессора, во времена преобладания больших систем - мейэнфреймов, ресурсы которых были очень дорогими, и их простой был экономически недопустим. Виртуализация позволяла повысить степень утилизации таких систем, при этом избавив пользователей и прикладных программистов от необходимости переписывать своё ПО, так как с их точки зрения виртуальная машина была идентична физической. Пионером в этой области являлась фирма IBM с мэйнфреймами System/360, System/370, созданными в 1960-1970-х гг. Неудивительно, что критерии возможности создания эффективного монитора виртуальных машин были получены примерно в то же время. Они сформулированы в классической работе 1974 г. Жеральда Попека и Роберта Голдберга «Formal requirements for virtualizable third generation architectures» . Рассмотрим её основные предпосылки и сформулируем её основной вывод. В дальнейшем используется упрощённое представление «стандартной» ЭВМ из статьи, состоящей из одного центрального процессора и линейной однородной оперативной памяти. Периферийные устройства, а также средства взаимодействия с ними опускаются. Процессор поддерживает два режима работы: режим супервизора, используемый операционной системой, и режим пользователя, в котором исполняются прикладные приложения. Память поддерживает режим сегментации, используемый для организации виртуальной памяти. Выдвигаемые требования на монитор виртуальных машин (ВМ):
  1. Изоляция - каждая виртуальная машина должна иметь доступ только к тем ресурсам, которые были ей назначены. Она не должна иметь возможности повлиять на работы как монитора, так и других ВМ.
  2. Эквивалентность - любая программа, исполняемая под управлением ВМ, должна демонстрировать поведение, полностью идентичное её исполнению на реальной системе, за исключением эффектов, вызванных двумя обстоятельствами: различием в количестве доступных ресурсов (например, ВМ может иметь меньший объём памяти) и длительностями операций (из-за возможности разделения времени исполнения с другими ВМ).
  3. Эффективность - в оригинальной работе условие сформулировано следующим образом: «статистически преобладающее подмножество инструкций виртуального процессора должно исполняться напрямую хозяйским процессором, без вмешательства монитора ВМ». Другими словами, значительная часть инструкций должна симулироваться в режиме прямого исполнения. Требование эффективности является самым неоднозначным из трёх перечисленных требований, и мы ещё вернёмся к нему. В случае симуляторов, основанных на интерпретации инструкций, условие эффективности не выполняется, т.к. каждая инструкция гостя требует обработки симулятором.
Состояние процессора содержит минимум три регистра: M, определяющий, находится ли он в режиме супервизора s или пользователя u, P - указатель текущей инструкции и R - состояние, определяющее границы используемого сегмента памяти (в простейшем случае R задаёт отрезок, т.е. R = (l,b), где l - адрес начала диапазона, b - его длина). Память E состоит из фиксированного числа ячеек, к которым можно обращаться по их номеру t, например, E[t]. Размер памяти и ячеек для данного рассмотрения несущественен.

При исполнении каждая инструкция i в общем случае может изменить как (M,P,R), так и память E, т.е. она является функцией преобразования: (M1,P1,R1,E1) -> (M2,P2,R2,E2).

Считается, что для некоторых входных условий инструкция вызывает исключение ловушки (англ. trap), если в результате её исполнения содержимое памяти не изменяется, кроме единственной ячейки E, в которую помещается предыдущее состояние процессора (M1,P1,R1). Новое состояние процессора (M2,P2,R2) при этом копируется из E. Другими словами, ловушка позволяет сохранить полное состояние программы на момент до начала исполнения её последней инструкции и передать управление обработчику, в случае обычных систем обычно работающему в режиме супервизора и призванного обеспечить дополнительные действия над состоянием системы, а затем вернуть управление в программу, восстановив состояние из E. Далее, ловушки могут иметь два признака.

  1. Вызванные попыткой изменить состояние процессора (ловушка потока управления).
  2. Обращения к содержимому памяти, выходящему за пределы диапазона, определённого в (ловушка защиты памяти).
Отметим, что эти признаки не взаимоисключающие. То есть результатом исполнения могут быть одновременно ловушка потока управления и защиты памяти. Машинные инструкции рассматриваемого процессора можно классифицировать следующим образом:
  • Привилегированные (англ. privileged). Инструкции, исполнение которых с M = u всегда вызывает ловушку потока управления. Другими словами, такая инструкция может исполняться только в режиме супервизора, иначе она обязательно вызывает исключение.
  • Служебные (англ. sensitive. Установившего русского термина для этого понятия я не знаю. Иногда в литературе встречается перевод «чувствительные» инструкции). Класс состоит из двух подклассов. 1. Инструкции, исполнение которых закончилось без ловушки защиты памяти и вызвало изменение M и/или R. Они могут менять режим процессора из супервизора в пользовательский или обратно или изменять положение и размер доступного сегмента памяти. 2. Инструкции, поведение которых в случаях, когда они не вызывают ловушку защиты памяти, зависят или от режима M, или от значения R.
  • Безвредные (англ. innocuous). Не являющиеся служебными. Самый широкий класс инструкций, не манипулирующие ничем, кроме указателя инструкций P и памяти E, поведение которых не зависит от того, в каком режиме или с каким адресом в памяти они расположены.
Соблюдение трёх сформулированных выше условий возможности построения монитора виртуальных машин даётся в следующем предложении: множество служебных инструкций является подмножеством привилегированных инструкций (рис. 1). Опуская формальное доказательство теоремы 1 из статьи, отметим следующие обстоятельства.
  • Изоляция обеспечивается размещением монитора в режиме супервизора, а ВМ - только в пользовательском. При этом последние не могут самовольно изменить системные ресурсы - попытка вызовет ловушку потока управления на служебной инструкции и переход в монитор, а также память из-за того, что конфигурация не допускает этого, и процессор выполнит ловушку защиты памяти.
  • Эквивалентность доказывается тем, что безвредные инструкции выполняются одинаково вне зависимости от того, присутствует ли в системе монитор или нет, а служебные всегда вызывают исключение и интерпретируются. Отметим, что даже в описанной выше простой схеме проявляется первое ослабляющее условие: даже без учёта памяти, необходимой для хранения кода и данных гипервизора, объём доступной для ВМ памяти будет как минимум на две ячейки меньше, чем имеется у хозяйской системы.
  • Эффективность гарантируется тем, что все безвредные инструкции внутри ВМ исполняются напрямую, без замедления. При этом подразумевается, что их множество включает в себя «статистически преобладающее подмножество инструкций виртуального процессора».

Рис. 1: Выполнение условия виртуализуемости. Множество служебных инструкций является подмножеством привилегированных Несмотря на простоту использованной модели и полученных из неё выводов, работа Голдберга и Попека является актуальной до сих пор. Следует отметить, что несоблюдение описанных в ней условий вовсе не делает создание или использование виртуальных машин на некоторой архитектуре принципиально невозможным, и есть практические примеры реализаций, подтверждающие это. Однако соблюсти оптимальный баланс между тремя свойствами: изоляцией, эквивалентностью и эффективностью, - становится невозможным. Чаще всего расплачиваться приходится скоростью работы виртуальных машин из-за необходимости тщательного поиска и программного контроля за исполнением ими служебных, но не привилегированных инструкций, так как сама аппаратура не обеспечивает этого (рис. 2). Даже единственная такая инструкция, исполненная напрямую ВМ, угрожает стабильной работе монитора, и поэтому он вынужден сканировать весь поток гостевых инструкций.

Рис. 2: Невыполнение условия виртуализуемости. Служебные, но не привилегированные инструкции требуют реализации сложной логики в мониторе В самой работе присутствуют как явно указанные упрощения исследуемой структуры реальных систем (отсутствие периферии и системы ввода-вывода), так и неявные предположения о структуре исполняемых гостевых программ (почти полностью состоящих из безвредных инструкций) и хозяйских систем (однопроцессорность). Рассмотрим теперь данные ограничения более детально, а также предложим, каким образом можно расширить степень применимости критерия к дополнительным ресурсам, требующим виртуализации, и таким образом повысить его практическую ценность для архитекторов новых вычислительных систем. Для эффективной работы программ внутри ВМ необходимо, чтобы большая часть их инструкций являлись безвредными. Как правило, это верно для прикладных приложений. Операционные системы, в свою очередь, предназначены для управления ресурсами системы, что подразумевает использование ими привилегированных и служебных инструкций, и монитору приходится их перехватывать и интерпретировать с соответствующим падением производительности. Поэтому в идеале в наборе инструкций должно быть как можно меньше привилегированных для того, чтобы частота возникновения ловушек была минимальной. Поскольку периферийные устройства являются служебным ресурсом ЭВМ, очевидно, что для обеспечения условий изоляции и эквивалентности необходимо, чтобы все попытки доступа к ним были контролируемы монитором ВМ так же, как они контролируются в многозадачной операционной системе её ядром. В настоящее время доступ к устройствам чаще всего производится через механизм отражения их в физической памяти системы (англ. memory mapped I/O), что означает, что внутри монитора это чтение/запись некоторых регионов должно или вызывать ловушку защиты памяти, или быть не служебным, т.е. не вызывать ловушку и не влиять на состояние неконтролируемым образом. Интенсивность взаимодействия приложений с периферией может быть различна и определяется их функциональностью, что сказывается на их замедлении при виртуализации. Кроме того, монитор ВМ может делать различные классы периферии, присутствующей на хозяине, доступными внутри нескольких ВМ различными способами.

  • Выделенное устройство - устройство, доступное исключительно внутри одной гостевой системы. Примеры: клавиатура, монитор.
  • Разделяемое - общее для нескольких гостей. Такое устройство или имеет несколько частей, каждая из которых выделена для нужд одного из них (англ. partitioned mode), например, жёсткий диск с несколькими разделами, или подключается к каждому из них поочерёдно (англ. shared mode). Пример: сетевая карта.
  • Полностью виртуальное - устройство, отсутствующее в реальной системе (или присутствующее, но в ограниченном количестве) и моделируемое программно внутри монитора. Примеры: таймеры прерываний - каждый гость имеет собственный таймер, несмотря на то, что в хозяйской системе есть только один, и он используется для собственных нужд монитора.
Прерывания являются механизмом оповещения процессора о событиях внешних устройств, требующих внимания операционной системы. В случае использования виртуальных машин монитор должен иметь возможность контролировать доставку прерываний, так как часть или все из них необходимо обрабатывать именно внутри монитора. Например, прерывание таймера может быть использовано им для отслеживания/ограничения использования гостями процессорного времени и для возможности переключения между несколькими одновременно запущенными ВМ. Кроме того, в случае нескольких гостей заранее неясно, какому из них следует доставить прерывание, и принять решение должен монитор. Простейшее решение, обеспечивающее изоляцию, - это направлять все прерывания в монитор ВМ. Эквивалентность при этом будет обеспечиваться им самим: прерывание при необходимости будет доставлено внутрь гостя через симуляцию изменения его состояния. Монитор может дополнительно создавать виртуальные прерывания, обусловленные только логикой его работы, а не внешними событиями. Однако эффективность такого решения не будет оптимальной. Как правило, реакция системы на прерывание должна произойти в течение ограниченного времени, иначе она потеряет смысл для внешнего устройства или будет иметь катастрофические последствия для системы в целом. Введение слоя виртуализации увеличивает задержку между моментом возникновения события и моментом его обработки в госте по сравнению с системой без виртуализации. Более эффективным является аппаратный контроль за доставкой прерываний, позволяющий часть из них сделать безвредными для состояния системы и не требовать каждый раз вмешательства программы монитора. Практически все современные компьютеры содержат в себе более одного ядра или процессора. Кроме того, внутри одного монитора могут исполняться несколько ВМ, каждая из которых может иметь в своём распоряжении несколько виртуальных процессоров. Рассмотрим, как эти обстоятельства влияют на условия виртуализации. Введение в рассмотрение нескольких хозяйских и гостевых процессоров оставляет условие эффективной виртуализуемости в силе. Однако необходимо обратить внимание на выполнение условий эффективности работы многопоточных приложений внутри ВМ. В отличие от однопоточных, для них характерны процессы синхронизации частей программы, исполняющихся на различных виртуальных процессорах. При этом все участвующие потоки ожидают, когда все они достигнут заранее определённой точки алгоритма, т.н. барьера. В случае виртуализации системы один или несколько гостевых потоков могут оказаться неактивными, вытесненными монитором, из-за чего остальные будут попусту тратить время.

Примером такого неэффективного поведения гостевых систем является синхронизация с задействованием циклических блокировок (англ. spin lock) внутри ВМ . Будучи неэффективной и поэтому неиспользуемой для однопроцессорных систем, в случае нескольких процессоров она является легковесной альтернативой другим, более тяжеловесным замкам (англ. lock), используемым для входа в критические секции параллельных алгоритмов. Чаще всего они используются внутри операционной системы, но не пользовательских программ, так как только ОС может точно определить, какие из системных ресурсов могут быть эффективно защищены с помощью циклических блокировок. Однако в случае виртуальной машины планированием ресурсов на самом деле занимается не ОС, а монитор ВМ, который в общем случае не осведомлён о них и может вытеснить поток, способный освободить ресурс, тогда как второй поток будет выполнять циклическую блокировку, бесполезно тратя процессорное время. Оптимальным решением при этом является деактивация заблокированного потока до тех пор, пока нужный ему ресурс не освободится.

Существующие решения для данной проблемы описаны ниже.

  1. Монитор ВМ может пытаться детектировать использование циклических блокировок гостевой ОС. Это требует анализа кода перед исполнением, установки точек останова по адресам замка. Способ не отличается универсальностью и надёжностью детектирования.
  2. Гостевая система может сигнализировать монитору о намерении использовать циклическую блокировку с помощью специальной инструкции. Способ более надёжный, однако требующий модификации кода гостевой ОС.
Наконец, отметим, что схемы доставки и обработки прерываний в системах с несколькими процессорами также более сложны, и это приходится учитывать при создании монитора ВМ для таких систем, при этом его эффективность может оказаться ниже, чем у однопроцессорного эквивалента. Модель машинных инструкций, использованная ранее для формулировки утверждения об эффективной виртуализации, использовала простую линейную схему трансляции адресов, основанную на сегментации, популярную в 70-х годах прошлого века. Она является вычислительно простой, не изменяется при введении монитора ВМ, и поэтому анализа влияния механизма преобразования адресов на эффективность не производилось. В настоящее время механизмы страничной виртуальной памяти и применяют нелинейное преобразование виртуальных адресов пользовательских приложений в физические адреса, используемые аппаратурой. Участвующий при этом системный ресурс - регистр-указатель адреса таблицы преобразований (чаще всего на практике используется несколько таблиц, образующих иерархию, имеющую общий корень). В случае работы ВМ этот указатель необходимо виртуализовать, так как у каждой гостевой системы содержимое регистра своё, как и положение/содержимое таблицы. Стоимость программной реализации этого механизма внутри монитора высока, поэтому приложения, активно использующие память, могут терять в эффективности при виртуализации. Для решения этой проблемы используется двухуровневая аппаратная трансляция адресов (рис. 3). Гостевые ОС видят только первый уровень, тогда как генерируемый для них физический адрес в дальнейшем транслируется вторым уровнем в настоящий адрес.

Рис. 3: Двухуровневая трансляция адресов. Первый уровень контролируется гостевыми ОС, второй - монитором виртуальных машин Другой ресурс ЭВМ, отвечающий за преобразование адресов, - это буфер ассоциативной трансляции (англ. translation lookaside buffer, TLB), состоящий из нескольких записей. Каждая гостевая система имеет своё содержимое TLB, поэтому при смене активной ВМ или переходе в монитор он должен быть сброшен. Это негативно сказывается на производительности систем, так как восстановление его содержимого требует времени, в течение которого приходится использовать менее эффективное обращение к таблице трансляций адресов, расположенной в памяти. Решение состоит в разделении ресурсов TLB между всеми системами . Каждая строка буфера ассоциируется с идентификатором - тэгом, уникальным для каждой ВМ. При поиске в нём аппаратурой учитываются только строки, тэг которых соответствует текущей ВМ. Кроме процессоров к оперативной памяти напрямую могут обращаться и периферийные устройства - с помощью технологии DMA (англ. direct memory access). При этом обращения в классических системах без виртуализации идёт по физическим адресам. Очевидно, что внутри виртуальной машины необходимо транслировать такие адреса, что превращается в накладные расходы и понижение эффективности монитора. Решение состоит в использовании устройства IOMMU (англ. Input output memory management unit), позволяющего контролировать обращения хозяйских устройств к физической памяти. Расширим условие виртуализуемости, заменив в нём слово «инструкция» на «операция»: множество служебных операций является подмножеством привилегированных. При этом под операцией будем подразумевать любую архитектурно определённую активность по чтению или изменению состояния системы, в том числе инструкции, прерывания, доступы к устройствам, преобразования адресов и т.п. При этом условие повышения эффективности виртуализации будет звучать следующим образом: в архитектуре системы должно присутствовать минимальное число служебных операций. Достигать его можно двумя способами: переводя служебные инструкции в разряд безвредных или уменьшая число привилегированных. Для этого большинство архитектур пошло по пути добавления в регистр состояния M нового режима r - режима монитора ВМ (англ. root mode). Он соотносится с режимом s так, как s - с u; другими словами, обновлёный класс привилегированных инструкций теперь вызывает ловушку потока управления, переводящую процессор из s в r. Рассмотрим основные современные архитектуры вычислительных систем, используемых на серверах, рабочих станциях, а также во встраиваемых системах, с точки зрения практической реализации описанных выше теоретических принципов. См. также серию статей . Компания IBM была одной из первых, выведших архитектуру с аппаратной поддержкой виртуализации на рынок серверных микропроцессоров в серии POWER4 в 2001 году. Она предназначалась для создания изолированных логических разделов (англ. logical partitions, LPAR), с каждым из которых ассоциированы один или несколько процессоров и ресурсы ввода-вывода. Для этого в процессор был добавлен новый режим гипервизора к уже присутсвовавшим режимам супервизора и пользователя. Для защиты памяти каждый LPAR ограничен в режиме с отключенной трансляцией адресов и имеет доступ лишь к небольшому приватному региону памяти; для использования остальной памяти гостевая ОС обязана включить трансляцию, контролируемую монитором ВМ. В 2004 году развитие этой архитектуры, названное POWER5, принесло серьёзные усовершенствования механизмов виртуализации. Так, было добавлено новое устройство таймера, доступное только для монитора ВМ, что позволило ему контролировать гостевые системы более точно и выделять им процессорные ресурсы с точностью до сотой доли от процессора. Также монитор ВМ получил возможность контролировать адрес доставки прерываний - в LPAR или в гипервизор. Самым важным же нововведением являлся тот факт, что присутствие гипервизора являлось обязательным - он загружался и управлял системными ресурсами, даже если в системе присутствовал единственный LPAR-раздел. Поддерживаемые ОС (AIX, Linux, IBM i) были модифицированы с учётом этого, чтобы поддерживать своеобразную паравиртуализационную схему. Для управления устройствами ввода-вывода один (или два, для балансировки нагрузки) из LPAR загружает специальную операционную систему - virtual I/O server (VIOS), предоставляющую эти ресурсы для остальных разделов. Компания Sun, развивавшая системы UltraSPARC и ОС Solaris, предлагала виртуализацию уровня ОС (т.н. контейнеры или зоны) начиная с 2004 г. В 2005 году в многопоточных процессорах Niagara 1 была представлена аппаратная виртуализация. При этом гранулярность виртуализации была равна одному потоку (всего чип имел восемь ядер, четыре потока на каждом). Для взаимодействия ОС и гипервизора был представлен публичный и стабильный интерфейс для привилегированных приложений , скрывающий от ОС большинство архитектурных регистров. Для трансляции адресов используется описанная ранее двухуровневая схема с виртуальными, реальными и физическими адресами. При этом TLB не хранит промежуточный адрес трансляции. В отличие от POWER и SPARC, архитектура IA-32 (и её расширение AMD64) никогда не была подконтрольна одной компании, которая могла бы добавлять функциональность (пара)виртуализации между аппаратурой и ОС, нарушающую обратную совместимость с существующими операционными системами. Кроме того, в ней явно нарушены условия эффективной виртуализации - около 17 служебных инструкций не являются привилегированными, что мешало создать аппаратно поддерживаемые мониторы ВМ. Однако программные мониторы существовали и до 2006 года, когда Intel представила технологию VT-x, а AMD - похожую, но несовместимую с ней AMD-V. Были представлены новые режимы процессора - VMX root и non root, и уже существовавшие режимы привилегий 0-3 могут быть использованы в обоих из них. Переход между режимами может быть осуществлён с помощью новых инструкций vmxon и vmxoff.

Для хранения состояния гостевых систем и монитора используется новая структура VMCS (англ. virtual machine control structure), копии которой размещены в физической памяти и доступны для монитора ВМ.

Интересным решением является конфигурируемость того, какие события в госте будут вызывать событие ловушки и переход в гипервизор, а какие оставлены на обработку ОС. Например, для каждого гостя можно выбрать, будут ли внешние прерывания обрабатываться им или монитором; запись в какие биты контрольных регистров CR0 и CR4 будет перехватываться; какие исключения должны обрабатываться гостём, а какие - монитором и т.п. Данное решение позволяет добиваться компромисса между степенью контроля над каждой ВМ и эффективностью виртуализации. Таким образом, для доверенных гостей контроль монитора может быть ослаблен, тогда как одновременно исполняющиеся с ними сторонние ОС будут всё так же под его строгим наблюдением. Для оптимизации работы TLB используется описанная выше техника тэгирования его записей с помощью ASID (англ. address space identifier). Для ускорения процесса трансляции адресов двухуровневая схема трансляции получила имя Intel EPT (англ. extended page walk). Intel добавила аппаратную виртуализацию в Itanium (технология VT-i ) одновременно с IA-32 - в 2006 году. Специальный режим включался с помощью нового бита в статусном регистре PRS.vm. С включенным битом ранее служебные, но не привилегированные инструкции начинают вызывать ловушку и выход в монитор. Для возвращения в режим гостевой ОС используется инструкция vmsw. Часть инструкций, являющаяся служебными, при включенном режиме виртуализации генерируют новый вид синхронного исключения, для которого выделен собственный обработчик.

Поскольку операционная система обращается к аппаратуре посредством специального интерфейса PAL (англ. processor abstraction level), последний был расширен, чтобы поддерживать такие операции, как создание и уничтожение окружений для гостевых систем, сохранение и загрузка их состояния, конфигурирование виртуальных ресурсов и т.д. Можно отметить, что добавление аппаратной виртуализации в IA-64 потребовало меньшего количества усилий по сравнению с IA-32.

Архитектура ARM изначально была предназначена для встраиваемых и мобильных систем, эффективная виртуализация которых, по сравнению с серверными системами, долгое время не являлась ключевым фактором коммерческого и технологического успеха. Однако в последние годы наметилась тенденция к использованию ВМ на мобильных устройствах для обеспечения защиты критически важных частей системного кода, например, криптографических ключей, используемых при обработке коммерческих транзакций. Кроме того, процессоры ARM стали продвигаться на рынок серверных систем, и это потребовало расширить архитектуру и добавить в неё такие возможности, как поддержка адресации больших объёмов памяти и виртуализация. Оба аспекта были отражены в избранном компанией ARM подходе к развитию своей архитектуры. На рис. 4 представлена схема, подразумевающая вложенность двух уровней виртуализации, представленная в 2010 году в обновлении архитектуры Cortex A15 . Рис. 4: Виртуализация ARM. Монитор TrustZone обеспечивает изоляцию и криптографическую аутентификацию доверенного «мира». В обычном «мире» используется собственный монитор ВМ Для обеспечения изоляции критических компонент используется первый слой виртуализации, называемый TrustZone. С его помощью все запущенные программные компоненты делятся на два «мира» - доверенный и обычный. В первой среде исполняются те части системы, работа которых не должна быть подвластна внешним влияниям обычного кода. Во второй среде исполняются пользовательские приложения и операционная система, которые теоретически могут быть скомпрометированы. Однако обычный «мир» не имеет доступа к доверенному. Монитор TrustZone обеспечивает доступ в обратном направлении, что позволяет доверенному коду контролировать состояние аппаратуры. Второй слой виртуализации исполняется под управлением недоверенного монитора и предоставляет возможности мультиплексирования работы нескольких пользовательских ОС. В нём добавлены новые инструкции HVC и ERET для входа и выхода в/из режим(а) гипервизора. Для событий ловушки использован ранее зарезервированный вектор прерываний 0x14, добавлены новые регистры: указатель стэка SPSR, состояние виртуальных ресурсов HCR и регистр «синдрома» HSR, в котором хранится причина выхода из гостя в монитор, что позволяет последнему быстро проанализировать ситуацию и проэмулировать необходимую функциональность без избыточного чтения состояния гостя. Так же, как это сделано в рассмотренных ранее архитектурах, для ускорения механизмов трансляции адресов используется двухуровневая схема, в которой физические адреса гостевых ОС являются промежуточными. Внешние прерывания могут быть настроены как на доставку монитору, который потом перенаправляет их в гость с помощью механизма виртуальных прерываний, так и на прямую отправку в гостевую систему. Процессоры MIPS развивались в направлении, обратном наблюдаемому для ARM: от высокопроизводительных систем к встраиваемым и мобильным. Тем не менее, аппаратная виртуализация для неё появилась относительно недавно, в 2012 г. Архитектура MIPS R5 принесла режим виртуализации MIPS VZ . Он доступен как для 32-битного, так и для 64-битного варианта архитектуры. Добавленное архитектурное состояние позволяет хранить контекст ВМ и монитора отдельно. Например, для нужд гипервизора введена копия системного регистра COP0, независимая от копии гостя. Это позволяет оптимизировать время переключения между ними, в то время как переключение между несколькими гостевыми ОС требует обновления COP0 содержимым из памяти и является менее эффективным. Кроме того, часть бит гостевого регистра, описывающие набор возможностей текущего варианта архитектуры и потому ранее используемые только для чтения, из режима монитора доступны для записи, что позволяет ему декларировать возможности, отличные от действительно присутствующих на хозяине.

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

Так же, как это сделано в рассмотренных ранее архитектурах, для ускорения механизмов трансляции адресов используют тэги в TLB и двухуровневую трансляцию в MMU. Для поддержки разработки паравиртуализационных гостей добавлена новая инструкция hypercall, вызывающая ловушку и выход в режим монитора. В заключение рассмотрим дополнительные вопросы обеспечения эффективной виртуализации, связанные с переключением между режимами монитора и ВМ. Частые прерывания работы виртуальной машины из-за необходимости выхода в монитор негативно влияют на скорость симуляции. Несмотря на то, что производители процессоров работают над уменьшением связанных с этими переходами задержек (для примера см. таблицу 1), они всё же достаточно существенны, чтобы пытаться минимизировать их частоту возникновения.

Микроархитектура Дата запуска Задержка, тактов
Prescott 3 кв. 2005 3963
Merom 2 кв. 2006 1579
Penryn 1 кв. 2008 1266
Nehalem 3 кв. 2009 1009
Westmere 1 кв. 2010 761
Sandy Bridge 1 кв. 2011 784
Таблица 1. Длительность перехода между режимами аппаратной виртуализации для различных поколений микроархитектур процессоров Intel IA-32 (данные взяты из )

Если прямое исполнение с использованием виртуализации оказывается неэффективным, имеет смысл переключиться на другую схему работы, например, на интерпретацию или двоичную трансляцию (см. мою серию постов на IDZ: 1, 2, 3).

На практике исполнения ОС характерна ситуация, что инструкции, вызывающие ловушки потока управления, образуют кластера, в которых две или более из них находятся недалеко друг от друга, тогда как расстояние между кластерами значительно. В следующем блоке кода для IA-32 приведён пример такого кластера. Звёздочкой обозначены все инструкции, вызывающие выход в монитор. * in %al,%dx * out $0x80,%al mov %al,%cl mov %dl,$0xc0 * out %al,%dx * out $0x80,%al * out %al,%dx * out $0x80,%al Для того, чтобы избежать повторения сценария: выход из ВМ в монитор, интерпретация инструкции, обратный вход в ВМ только для того, чтобы на следующей инструкции вновь выйти в монитор, - используется предпросмотр инструкций . После обработки ловушки, прежде чем монитор передаст управление обратно в ВМ, поток инструкций просматривается на несколько инструкций вперёд в поисках привилегированных инструкций. Если они обнаружены, симуляция на некоторое время переключается в режим двоичной трансляции. Тем самым избегается негативное влияние эффекта кластеризации привилегированных инструкций. Ситуация, когда монитор виртуальных машин запускается под управлением другого монитора, непосредственно исполняющегося на аппаратуре, называется рекурсивной виртуализацией. Теоретически она может быть не ограничена только двумя уровнями - внутри каждого монитора ВМ может исполняться следующий, тем самым образуя иерархию гипервизоров. Возможность запуска одного гипервизора под управлением монитора ВМ (или, что тоже самое, симулятора) имеет практическую ценность. Любой монитор ВМ - достаточно сложная программа, к которой обычные методы отладки приложений и даже ОС неприменимы, т.к. он загружается очень рано в процессе работы системы, когда отладчик подключить затруднительно. Исполнение под управлением симулятора позволяет инспектировать и контролировать его работу с самой первой инструкции. Голдберг и Попек в своей упомянутой ранее работе рассмотрели вопросы эффективной поддержки в том числе и рекурсивной виртуализации. Однако их выводы, к сожалению, не учитывают многие из упомянутых выше особенностей современных систем. Рассмотрим одно из затруднений, связанных со спецификой вложенного запуска мониторов ВМ - обработку ловушек и прерываний. В простейшем случае за обработку всех типов исключительных ситуаций всегда отвечает самый внешний монитор, задача которого - или обработать событие самостоятельно, тем самым «спрятав» его от остальных уровней, или передать его следующему. Как для прерываний, так и для ловушек это часто оказывается неоптимальным - событие должно пройти несколько уровней иерархии, каждый из которых внесёт задержку на его обработку. На рис. 5 показана обработка двух типов сообщений - прерывания, возникшего во внешней аппаратуре, и ловушки потока управления, случившейся внутри приложения.

Рис. 5: Рекурсивная виртуализация. Все события должны обрабатываться внешним монитором, который спускает их вниз по иерархии, при этом формируется задержка Для оптимальной обработки различных типов ловушек и прерываний для каждого из них должен быть выбран уровень иерархии мониторов ВМ, и при возникновении события управление должно передаваться напрямую этому уровню, минуя дополнительную обработку вышележащими уровнями и без связанных с этим накладных расходов. Задаче аппаратной поддержки второго и более уровней вложенности виртуализации производители процессоров уделяют значительно меньше внимания, чем первому её уровню. Тем не менее такие работы существуют. Так, ещё в восьмидесятых годах двадцатого века для систем IBM/370 была реализована возможность запуска копий системного ПО внутри уже работающей на аппаратуре операционной системы. Для этой задачи была введена инструкция SIE (англ. start interpreted execution) . Существуют предложения об интерфейсе между вложенными уровнями виртуализации , который позволил бы эффективно поддерживать вложенность нескольких мониторов ВМ, и реализация рекурсивной виртуализации для IA-32 . Однако современные архитектуры процессоров всё же ограничиваются аппаратной поддержкой максимум одного уровня виртуализации.

  1. Goodacre John. Hardware accelerated Virtualization in the ARM Cortex Processors. 2011. xen.org/files/xensummit_oul11/nov2/2_XSAsia11_JGoodacre_HW_accelerated_virtualization_in_the_ARM_Cortex_processors.pdf
  2. Hardware-assisted Virtualization with the MIPS Virtualization Module. 2012. www.mips.com/application/login/login.dot?product_name=/auth/MD00994-2B-VZMIPS-WHT-01.00.pdf
  3. Hypervisor/Sun4v Reference Materials. 2012. kenai.com/projects/hypervisor/pages/ReferenceMaterials
  4. Intel Virtualization Technology / F. Leung, G. Neiger, D. Rodgers et al. // Intel Technology Journal. 2006. Vol. 10. www.intel.com/technology/itj/2006/v10i3
  5. McGhan Harlan. The gHost in the Machine: Part 1 // Microprocessor Report. 2007. mpronline.com
  6. McGhan Harlan. The gHost in the Machine: Part 2 // Microprocessor Report. 2007. mpronline.com
  7. McGhan Harlan. The gHost in the Machine: Part 3 // Microprocessor Report. 2007. mpronline.com
  8. Popek Gerald J., Goldberg Robert P. Formal requirements for virtualizable third generation architectures // Communications of the ACM. Vol. 17. 1974.
  9. Southern Gabriel. Analysis of SMP VM CPU Scheduling. 2008. cs.gmu.edu/~hfoxwell/cs671projects/southern_v12n.pdf
  10. Yang Rongzhen. Virtual Translation Lookaside Buffer. 2008. www.patentlens.net/patentlens/patent/US_2008_0282055_A1/en.
  11. Software techniques for avoiding hardware virtualization exits / Ole Agesen, Jim Mattson, Radu Rugina, Jeffrey Sheldon // Proceedings of the 2012 USENIX conference on Annual Technical Conference. USENIX ATC"12. Berkeley, CA, USA: USENIX Association, 2012. P. 35-35. www.usenix.org/system/files/conference/atc12/atc12-final158.pdf
  12. Poon Wing-Chi, Mok A.K. Improving the Latency of VMExit Forwarding in Recursive Virtualization for the x86 Architecture // System Science (HICSS), 2012 45th Hawaii International Conference on. 2012. P. 5604-5612.
  13. Osisek D. L., Jackson K. M., Gum P. H. ESA/390 interpretive execution architecture, foundation for VM/ESA // IBM Syst. J. - 1991- V. 30, No 1. - Pp. 34–51. - ISSN: 0018-8670. -DOI: 10.1147/sj.301.0034.
  14. Andy Glew. SIE. - semipublic.comp-arch.net/wiki/SIE
  15. The Turtles Project: Design and Implementation of Nested Virtualization / Muli Ben-Yehuda //. - 2010. - P. 423–436. www.usenix.org/event/osdi10/tech/full_papers/Ben-Yehuda.pdf

habrahabr.ru

Virtualization Technology

Другие идентичные названия опции: Vanderpool Technology, VT Technology.

Опция Virtualization Technology (технология виртуализации) предназначена для включения режима поддержки процессором технологии аппаратной виртуализации. Данная опция может принимать всего два значения – Enabled (Включено) и Disabled (Выключено).

  • Принцип работы
  • Стоит ли включать?

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

Что же вообще означает термин «виртуализация»? Технология виртуализации позволяет пользователю иметь множество виртуальных компьютеров на одном-единственном физическом компьютере. Естественно, что такой подход зачастую имеет немало преимуществ по сравнению с наличием нескольких физических компьютеров, прежде всего в плане сокращения расходов на оборудование и уменьшения энергопотребления.

Для создания виртуальных компьютеров требуется специальное программное обеспечение. Наиболее известно такое ПО для виртуализации, как VMWare и Microsoft Virtual PC.

Сердцем любой системы виртуализации является технология, носящая название диспетчера виртуальных машин (Virtual Machine Monitor, VMM). Эта технология создает прочную основу для управления виртуализацией. В функции диспетчера виртуальных машин (который также иногда называют гипервизором) входит управление в реальном времени ресурсами компьютера и распределение их между виртуальными системами. Гипервизор может осуществлять перенос данных между системами и создавать виртуальные диски.

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

Однако долгое время технология виртуализации была основана лишь на программных методах, а на аппаратном уровне ее поддержка почти отсутствовала, в частности, из-за отсутствия четких стандартов. Хотя одной из первых реализаций аппаратной виртуализации стала поддержка виртуального режима работы процессора Intel 8086, встроенная еще в процессор 80386 и в последующие процессоры фирмы Intel(подробнее с процессорами можно познакомиться тут), тем не менее, возможности данной технологии были ограничены. Сегодня ведущие производители процессоров, Intel и AMD предлагают собственные технологии виртуализации, рассчитанные уже на защищенный режим работы процессора.

Вариант технологии виртуализации от Intel носит название VT-x. Он появился в 2005 г. Эта технология внедрила в серверные и клиентские платформы ряд улучшений, обеспечивающих поддержку программных средств виртуализации. Технология VT-x позволяет различным операционным системам и приложениям работать в независимых разделах и способна превратить компьютер в набор виртуальных операционных систем.

Технология виртуализации AMD носит название AMD-V. Впервые она появилась в процессорах Athlon 64 в 2006 г. Эта технология позволяет взять на себя некоторые задачи, выполняемые гипервизором программным способом и упростить их благодаря встроенному в процессоры AMD улучшенному набору инструкций.

По сравнению с программным методом виртуализации аппаратная виртуализация имеет ряд преимуществ. Дело в том, что операционные системы, предназначенные для платформы Intel, разрабатывались таким образом, что операционная система должна была иметь прямой доступ к аппаратным ресурсам компьютера. Программная виртуализация эмулировала необходимое оборудование, а технологии аппаратной виртуализации позволили операционной системе осуществлять прямой доступ к аппаратным ресурсам, избегая какой-либо эмуляции.

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

В традиционной архитектуре Intel x86 ядро операционной системы может осуществлять прямой доступ к процессору на уровне 0. Однако в среде программной виртуализации гостевая операционная система не может осуществлять работу на нулевом уровне, поскольку он занят гипервизором. Таким образом, гостевая операционная система может выполняться лишь на уровне 1.

Но тут есть одна загвоздка – некоторые инструкции процессора могут выполняться лишь на уровне 0. Эту проблему можно решить несколькими способами, но ни один из них не является удовлетворительным. Например, операционная система может быть перекомпилирована, чтобы избежать подобных ситуаций, но это можно осуществить лишь в том случае, если доступны исходные коды данной операционной системы. Такой подход иногда применяется и носит название паравиртуализации.

Но в тех случаях, когда паравиртуализация невозможна, обычно используется другое решение. Диспетчер виртуальных машин просто перехватывает нужные инструкции гостевой операционной системы и заменяет их на безопасные. Само собой, что такой подход приводит к значительному падению производительности. Соответственно, программные виртуальные машины часто получаются намного медленнее их реальных аналогов.

Поэтому технологии аппаратной виртуализации от Intel и AMD содержат не только новые процессорные инструкции, но и, что имеет решающее значение, позволяют использовать новый уровень привилегий. Теперь гипервизор может работать на уровне более низком, чем нулевой (его можно обозначить, как –1), в то время, как гостевой операционной системе предоставляется в полное распоряжение нулевой уровень. Таким образом, гипервизор был избавлен от ненужной кропотливой работы, а производительность виртуальных машин значительно увеличилась.

Технологии Intel и AMD не во всем идентичны, однако они предлагают схожие преимущества и функциональность. Помимо увеличения производительности виртуальных машин, они позволяют увеличить количество виртуальных машин на одной физической системе, а также увеличить количество пользователей виртуальных машин.

Стоит ли включать?

Опция Virtualization Technology (иногда называемая просто Virtualization) позволяет пользователю компьютера включить поддержку аппаратной виртуализации на уровне центрального процессора. Выбор значения Enabled включает эту поддержку, а значения Disabled – выключает.

Опцию Virtualization Technology следует включать лишь в том случае, если вы используете свой компьютер для запуска виртуальных машин. Включение аппаратной поддержки виртуальных машин способно значительно повысить производительность их работы. Однако в том случае, если виртуальные машины не используются, включение опции никак не повлияет на производительность компьютера.

Всем привет У себя в биосе материнки вы можете найти такое как Intel Virtualization Technology и тут у вас сразу возникнут вопросы, включать это или нет? За что это вообще отвечает, что за дичь, а если включить, то может комп заработает лучше? Да, мыслей может быть много, когда я колупал комп, изучал все, то тоже было много мыслей, типа, а что будет если…

Короче скажу сразу, я знаю что такое Intel Virtualization Technology, но вот также скажу, что в большинстве случаев вам ее включать не нужно. Ни вам, ни вашим знакомым, ну что-то мне подсказывает, что данная технология вам тупо не нужна. А почему это подумаете вы? Окей, скажу. Значит Intel Virtualization Technology это технология виртуализации, чтобы некоторое ПО могло так бы сказать напрямую работать с процессором.

Вы тут наверно спросите, какое еще ПО? Здесь я имею ввиду программы виртуализации компьютера, по простому это виртуальные машины, пока что самые популярные это платная VMware Workstation (кстати есть бесплатный вариант это VMware Player) и абсолютно бесплатная VirtualBox. Говорят что первая это именно виртуальная машина, а вторая это эмулятор. Но не особо понимаю разницу

А вот как выглядит эта опция в самом биосе, смотрите:


Так вот, а простым юзерам технология Intel Virtualization Technology даром не нужна, она ничего не делает, никакой мощи не прибавляет. Вам наверно может стать интересно, что же такое виртуальная машина, что это вообще такое? Это программа, которая имитирует компьютер, но он виртуальный. Вот в него можно установить виндовс, добавить жесткий диск или удалить, задать количество ядер процессора, указать обьем оперативной памяти. Понимаете? Но вот чтобы такой виртуальный комп работал шустро, то нужно некий виртуальный доступ к процессору, вот для обеспечения этого доступа технология Intel Virtualization Technology и нужна

Как вы уже поняли, данная технология встречается у процов Intel, но у AMD также есть своя, называется она AMD-V и это примерно тоже самое что и у Intel. Виртуальные машины без этой технологии будут работать жутко медленно. Вообще Intel Virtualization Technology подразделяется на две части, это VT-x и VT-d, то есть если вы увидите такие обозначения, то теперь знаете что это. О том что такое VT-x и VT-d я уже писал вот здесь, так что велкам читать.

Аппаратная виртуализация обеспечивает производительность виртуальной машины, практически аналогичную производительности невиртуализованной машины, эту технология необходима для того чтобы была возможность работать с виртуальными машинами на вашем компьютере. По умолчанию на некоторых виртуализация может быть выключена. В данной статье я расскажу как узнать поддерживает ли ваш процессор технологию Intel VT-X (процессоры Intel) или AMD-V(процессоры AMD). Так же из этой статьи вы узнаете как включить технологию Intel VT-X и AMD-V.

Intel VT-x это аппаратаная виртуализация от компании Intel. Для того чтобы узнать поддерживает ли ваш процессор технологию Intel VT-X скачиваем программу CPU-Z. . После запуска в окне программы смотрим технологии который поддерживает ваш процессор:

Если в графе «Instruction» есть VT-X - значит ваш процессор поддерживает виртуализацию.

AMD-V

AMD-V - технология аппаратной виртуализации от AMD. Для проверки поддержки вашего процессора этой технологии нам так же понадобится программа CPU-Z, запускаем ее и смотрим пункт «instruction». Если там есть AMD-V значит ваш процессор поддерживает виртуализацию:

Включение VT-X/AMD-V в Bios

Загружаемся в Bios. В Биосе картина у всех может быть разная, нам надо найти упоминание о виртуализации (intel virtualization technology или virtualization) и включить эту функцию. В моем случае было так:


Сохраняем настройки Bios и перезагружаемся. Вот и все, виртуализация включена включена!

Включение VT-X/AMD-V в UEFI

В случае с UEFI мне пришлось перейти на вкладку Advanced > CPU configuration и там включить виртуализацию:

После включения VT-X и AMD-V у вас появляется возможность создавать виртуальные машины на вашем компьютере

Включаем аппаратную виртуализацию центральных процессоров , технологии AMD - AMD-V и Intel - VT-X. Подробно о том, как проверить поддерживается ли виртуализация процессором и как включить виртуализацию в BIOS. Проверяется и включается технология просто….

Виртуализация это - под виртуализацией подразумевают процессорную архитектуру с возможностью моделирования аппаратного обеспечения (виртуальных гостевых систем) программными методами . Технология виртуализации делает возможным запуск нескольких операционных систем (виртуальных ОС) на одном реальном физическом компьютере, с изолированными разделёнными вычислительными процессами, с выделенными логическими ресурсами, часть - процессорных мощностей, объёма оперативной памяти , файловой подсистемы от общего пула.

Простыми словами, виртуализация даёт возможность пользователю, запустить на одном физическом персональном компьютере разноплановые виртуальные машины с разными видами операционных систем (Windows, Android, Linux, MacOS X) или одинаковые, с любым набором программ. Наиболее востребована на данный момент у игроманов, позволяет запустить и ускорить .

Как проверить - поддерживается и включена ли виртуализация.

Для тех, кто опасается заходить в BIOS, проверить поддерживается процессором технология виртуализации или нет и включена ли она в БИОСе, можно программой SecurAble. Утилита бесплатна, не требует установки - версия portable, буквально в два клика - запустили, узнали результат, закрыли. Скачать программу можно зайдя на официальный сайт SecurAble либо скачать по прямой ссылке с - оф. сайта.


Параметры SecurAble:
1. Значение параметра Maximum Bit Length указывает на максимально доступную разрядность системы 32-bit или 64-bit.

2. Значения Hardware D.E.P - технология отвечающая за безопасность, внедрена для противодействия запуску вредоносного кода.

3. Опция Hardware Virtualization - параметр может выдать четыре значения:
Yes - технология виртуализации поддерживается процессором - включена;
No - виртуализация не поддерживается процессором;
Locked On - включена и поддерживается, но не может быть в BIOS выключена;
Locked Off - поддержка технологии есть, но отключена и в BIOS включить нельзя.

Надпись Locked Off не всегда является приговором - перепрошивка BIOS может исправить ситуацию.

Как включить виртуализацию в BIOS.

За включение аппаратной виртуализации в БИОСе отвечает Virtualization Technology. Для отключения опции или включения виртуализации в BIOS, отправляем ПК на перезагрузку. При проявлении первых признаков загрузки, клацаем по клавише клавиатуры «F2» или «Delete» (разные версии БИОС), ищите подсказку внизу экрана на старте.

Заходим в раздел «Advanced BIOS - Features», находим опцию «Virtualization» или «Advanced» → «CPU Configuration», опция «Intel Virtualization Technology».


Передвигаемся при помощи стрелок клавиатуры (в БИОС UEFI мышкой), нажимаем «Enter», меняем параметр у «Virtualization» с «Disabled» (отключено) на «Enabled» (включено). Виртуализацию включили в BIOS, осталось не упустить один важный клик - не забываем нажать на кнопку «F10», что соответствует значению - сохранить настройки (Save).

И самое главное, помните - Virtualization Technology лишь создаёт среду для эмуляторов Андроид, операционных систем и на фактическую производительность железа никак не влияет (не делает компьютер мощным). Потрудитесь сначала , выбирая комплектующие с умом и лишь затем что-то требуйте от него.

На сегодняшний день известно, что поддержка аппаратной виртуализации Intel VT-x/VT-d и AMD-V необходима для работы виртуальных машин, таких как VirtualBox и VMware Workstation , а также для работы так называемых программ эмуляторов мобильных операционных систем, например для ОС Android.

В наше время почти все современные компьютеры имеют поддержку данной технологии, но есть конечно и такие которые не поддерживают. И для того чтобы узнать, имеет ли наш процессор поддержку данной технологии, мы для начало зайдем в BIOS нашего компьютера и посмотрим есть ли там интересующая нас настройка. Я добавил в статью несколько примеров того как выглядит пункт включения виртуализации в разных версиях BIOS . В основном включение этого параметра находится на вкладке advanced, далее как видно на картинке ниже, под названием и скрывается доказательство того, что данный компьютер поддерживает эту технологию.

В данной версии BIOS переходим во вкладку advanced BIOS features, где так же видим в пункте virtualization поддержку данной технологии.


И здесь в пункте advanced BIOS features видно, что аппаратная виртуализация поддерживается процессором.


Ну и последний вариант, где во вкладке advanced в пункте secure virtual machine mode, мы также может включить данную технологию.

Но бывают и такие случаи, что в BIOS-е нашего компьютера нет пункта включения аппаратной виртуализации secure virtual machine mode или intel virtualization technology , хотя как говорят, что тот процессор который стоит в вашем компьютере поддерживает данную технологию. Для того чтобы убедится в этом, нам поможет маленькая утилита под названием SecurAble, которая точно покажет поддерживает ли наш процессор аппаратную виртуализацию. Переходим на официальный сайт производителя по ссылке https://www.grc.com/securable.htm, где внизу нажимаем на пункт Download Now. Начнется загрузка, после запускаем программу, устанавливать её не надо, так как эта портативная версия.


После запуска, программа сразу покажет информацию о том поддерживает или не поддерживает технологию виртуализации ваш процессор. Увидеть это можно в третьем по счету блоке. Как вы уже догадались, если стоит надпись yes значит поддержка есть.


Если написано Locked OFF, это значит что, поддержка данной технологии есть, но её надо включить. А включается она, как мы уже знаем, в BIOS -е нашего компьютера.


Ну и если блок имеет надпись NO, значит технология аппаратной виртуализации не поддерживается вашим процессором.


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

Спасибо за внимание!

В общем на днях я столкнулся с такой проблемой, как невозможность запуска гостевых операционных системах на виртуальной машине . Точнее сказать, я не мог запускать именно 64-х разрядные системы, хотя процессор у меня такие вполне себе поддерживает. Также, была проблема с запуском дистрибутива Linux с флешки, появлялась так же самая проблема.

Покопавшись как-то ночью в интернете, я обнаружил некий параметр Virtualization Technology, который включает технологию виртуализации. Она активируется в BIOS. Таким образом, если ее активировать, то вы сможете без проблем использовать гостевые системы на таких виртуальных машинах , как, например, и другие. В основном, данная функция на работу системы не влияет, по умолчанию, она отключена (Disabled).

В разных системах BIOS она может иметь разные названия, например, Virtualization, Vanderpool Technology, VT Technology.

Итак, аппаратная виртуализация, мы поняли, что она дает поддержку со спец. Процессорной архитектурой. Существует две технологии виртуализации: AMD-V и Intel-VT.

AMD-V – данная технология еще имеет аббревиатуру SVM (Secure Virtual Machines). Технология ввода/вывода IOMMU. Оказывается, она даже по эффективнее, чем Intel-VT.

Intel-VT (Intel Virtualization Technology) – в данной технологии реализована виртуализация реальной адресации. Может обозначаться аббревиатурой VMX (Virtual Machine eXtension).

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

Как включить Virtualization Technology?

Ну собственно тут все очень просто. Для начала вам нужно, а потом найти пункт Virtualization Technology , он может называться и немного по-другому, как я писал выше, например.

В разных видах BIOS пункт может находится в разных местах, например, в BIOS фирмы AWARD и системных платах Gigabyte вы увидите ее, как только попадете в BIOS, чтобы включить, нужно всего лишь перевести параметр в положение «Enabled» .


В BIOS фирмы American Megatrends Inc данная технология включена по умолчанию и находится во вкладке «Advanced» . Там вы сможете ее включить или отключить.


В BIOS некоторых ноутбуков HP (Hewlett-Packard Company) и BIOS InsydeH20 Setup Utility функция виртуализации отключена. Чтобы ее активировать нужно перейти во вкладку «System Configuration» .


http://сайт/wp-content/uploads/2016/06/virtualization-technology.jpg http://сайт/wp-content/uploads/2016/06/virtualization-technology-150x150.jpg 2017-04-21T11:45:19+00:00 EvilSin225 Windows AMD-V,intel virtualization technology что это,Intel-VT,virtualization technology,virtualization technology в биосе что это В общем на днях я столкнулся с такой проблемой, как невозможность запуска гостевых операционных системах на виртуальной машине. Точнее сказать, я не мог запускать именно 64-х разрядные системы, хотя процессор у меня такие вполне себе поддерживает. Также, была проблема с запуском дистрибутива Linux с флешки, появлялась так же самая... EvilSin225 Андрей Терехов Administrator Компьютерные технологии

© 2024 nimfettamine.ru - Windows. Железо. Программы. Безопасность. Операционные системы