Міжнародна конференція розробників
і користувачів вільного програмного забезпечення

Виртуализация: история развития и технологии аппаратной поддержки

Павел Круглей, Минск, Беларусь

The history of virtualization and virtual machines is briefly discussed. The main types of virtualization are described, with focus on hardware-aided types: the first generation — VT-x, VT-d, AMD-v technologies, the second one — EPT / RVI, and the wave of technology, virtualization on mobile devices.

Истоки (1970е)

Всё начиналось с виртуализации памяти на машинах второго поколения в качестве средства расширения размеров оперативной памяти. Потребность в механизме расширения возникла из-за того, что использовавшаяся в то время память на ферритовых сердечниках стоила чрезвычайно дорого. Поэтому казалось логичным виртуализовать ее, то есть расширить за счет использования внешних устройств.

Впервые виртуальная машина появилась в 1961 году в супервизоре суперкомпьютера Atlas, который был разработан английской компанией Ferranti. В середине 60-х годов она была реализована в проект IBM M44/44X Project и машине IBM 7044.

Следующим шагом в развитии идеи виртуализации стала концепция «виртуальной машины». Она появилась в 1965 году, когда исследователи в корпорации IBM предприняли экспериментальную попытку разделить компьютер на отдельные небольшие части. Это направление исследований привело к созданию многопользовательской операционной среды на машинах IBM System 370 и System 390 и операционной системы VM/ESA, совместно называемых генеалогической линией IBM VM (Virtual Machine).

Виртуализация в СССР

Проект СВМ/Система Виртуальных Машин являлся частью
комплексной программы ЕС ЭВМ (аналога IBM System/370), которая была начата в 1969 году. Адаптация системы IBM VM/370 Release 5 и программных продуктов ее окружения были основными целями в начале проекта СВМ.

СВМ (VM, и её ранняя версия CP/CMS) — первая система, в которой была реализована технология виртуальных машин. Виртуализация в СВМ была последовательной и полной, в частности, на виртуальной машине можно было запустить другую копию системы СВМ, и так далее.

Архитектурно СВМ состояла из нескольких независимых компонентов. Центральным компонентом был монитор виртуальных машин (МВМ, IBM-овское название — CP, Control Program), который управлял аппаратурой реальной ЭВМ и реализовывал набор виртуальных машин с заданной конфигурацией. Остальные компоненты представляли собой операционные системы или системонезависимые программы виртуальных машин, работавшие под управлением МВМ: подсистема диалоговой обработки (ПДО), подсистема сетевой передачи файлов (ПСП), подсистема логической коммутации абонентских пунктов (ПЛК), подсистема анализа дампов (ПАД), подсистема дистанционной передачи файлов (ПДП), подсистема контроля технических средств (ПКТ), средства генерации и обслуживания (СГО).

Типы виртуализации

Обычно среди решений на основе виртуализации выделяют:

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

Виртуализация в x86

Впервые апаратная виртуализация была реализована в 386-х процессорах и носила название V86 mode. Этот режим позволял запускать параллельно несколько DOS-приложений.

В 2005-м году компании Intel и AMD представили решения аппаратной поддержки виртуализации — INTEL VT и AMD-V. Были введены дополнительные инструкции для предоставления прямого доступа к ресурсам процессора из гостевых систем. Этот набор дополнительных инструкций носит название Virtual Machine Extensions (VMX). VMX предоставляет инструкции: VMPTRLD, VMPTRST, VMCLEAR, VMREAD, VMREAD, VMWRITE,
VMCALL, VMLAUNCH, VMRESUME, VMXON и VMXOFF.

Архитектура AMDV похожа на VT и предоставляет те же функциональные возможности, однако предусматривает также ряд дополнительных функций, отсутствующих у Intel VT.

Технология VT-d позволяет избежать полной виртуализации
устройств ввода-вывода. Используя VT-d, VMM сможет «прикреплять» драйверы физических устройств к ВМ, что позволит гостевой ОС взаимодействовать с прикрепленным устройством без передачи управления VMM посредством механизма DMA (прямого доступа устройств к памяти минуя процессор).

Следующее поколение аппаратной виртуализации предусматривает виртуализацию памяти. Это технологии AMD NPT (Nested Page Tables) / Intel EPT (Extended Page Tables). В целом технологии HAP (Hardware Assisted Paging), NPT, EPT и RVI (Rapid Virtualization Indexing) — скорее изобретение маркетологов, так как на самом деле обозначают одно и то же. При вызове операций из гостевой ОС, она отдает команду VMLAUNCH и начинает исполнять свой код, пользуясь далее инструкцией VMRESUME. Однако при операциях с памятью, гостевая ОС должна работать через монитор виртуальных машин VMM для управления памятью (механизм называется Shadow Paging). С использованием же Extended Page Tables (EPT) — гостевая ОС может сама управляться со страницами памяти, включая контроль Page Faults, которые, кстати, проходят через гипервизор и вызывают VMEXIT. Инструкция VMEXIT — это по сути передача управления Монитору виртуальных машин гипервизора, от которого ожидаются какие-то действия. Соответственно, чем меньше вызовов VMEXIT — тем лучше.

Мобильная виртуализация

Компания VMware продемонстрировала MVP (Mobile
Virtualization Platform), гипервизор для мобильных устройств, позволяющий одновременно использовать на телефоне такие платформы, как Google Android и Windows Mobile. Разработку планируется использовать для создания на мобильном устройстве дополнительного защищенного окружения для работы с приватными данными.

Гипервизор MVP был продемонстрирован на планшетном ПК Nokia N800. 128MB ОЗУ и 256MB Flash оказалось достаточно для одновременного запуска двух виртуальных машин с Windows CE 6.0 и Google Android.

TRANGO — гипервизор, а точнее виртуальный процессор, весящий 20 Kb, позволяющий запускать на мобильном устройстве с RISC-процессором от ARM или MIPS несколько гостевых ОС: eCos, Linux, Windows CE и другие ОС.

Компания Citrix объединила свои усилия с группой разработчиков Open Kernel Lab (OK Lab), создав уникальную мобильную платформу под рабочим названием Nirvana Phone.

Проект Nirvana Phone можно рассматривать как гибрид карманного смартфона и традиционных настольных гипервизоров. Виртуальный рабочий стол XenDesktop внутри коммуникаторa Nirvana Phone легко разворачивается в полноценное рабочее место с большим монитором, мышью и клавиатурой за счет применения мобильного клиентского модуля виртуализации OKL4 Microvisor 4.0. Сами разработчики считают, что оптимальным способом подключения периферийных устройств будет беспроводной интерфейс
Bluetooth – использование этого канала позволяет применять массу уже выпускаемых серийно устройств.