Главная    Разработка ПО    Виртуальные машины: технология виртуализации

Технология виртуализации

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

Первое понятие - «Хостовая операционная система» – это операционная система, установленная на реальное оборудование. В рамках этой операционной системы устанавливается программное обеспечение виртуализации, как обычное приложение.

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

Графическая оболочка эмулятора VMware Workstation

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

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

Третье понятие – «гостевая операционная система» - это операционная система, устанавливаемая на созданную виртуальную машину. Обычно, она устанавливается так же, как на реальную персональную ЭВМ. В качестве гостевых операционных систем можно использовать Window, Linux, OS/2 и др.

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

Хостовая операционная система и эмулятор распределяют между собой ресурсы реальной ЭВМ и составляют второй уровень иерархии.

Также хостовая операционная система занимается управлением работающих на ней приложений и распределением между ними ресурсов реальной ЭВМ.

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

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

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

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

Схема взаимодействия виртуальных машин с реальной ЭВМ

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

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

Все существующие мониторы виртуальных машин можно разделить на четыре вида:

1. Использующие аппаратную виртуализацию.

2. Использующие аппаратно-программную виртуализацию.

3. Использующие программную виртуализацию.

4. Использующие доменную виртуализацию.

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

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

Мониторы виртуальных машин, использующие технологию аппаратно–программной виртуализации, часть инструкций выполняют, непосредственно, на самом процессоре, а часть - эмулируют.

Существуют три типа программной эмуляции инструкций:

1. Полная эмуляция инструкций.

2. Выборочная эмуляция инструкций.

3. Эмуляция API.

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

Однако, интерпретация каждой инструкции приводит к значительному расходу ресурсов реальной ЭВМ и снижает быстродействие приложений, работающих в гостевой операционной системе. Принимая во внимание, что современные серверы и персональные ЭВМ обладают все большей производительностью, виртуализация, с использованием интерпретации инструкций, приобретает все большую популярность. Яркими представителями этого класса виртуальных машин являются: Microsoft Virtual PC, Bochs, Simics и другие.

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

Например, аналогичный способ виртуализации был использован при эмуляции ЭВМ А15К на ЭВМ «Багет 23В», позволивший без изменения запускать программное обеспечение, разработанное на языке низкого уровня А-15, на современной вычислительной технике. Это дало возможность значительно ускорить модернизацию бортовой вычислительной техники, минимизировать трудоемкость и сохранить без изменений годами отлаживаемое программное обеспечение, а, следовательно, значительно повысить конкурентоспособность разрабатываемого продукта.

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

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

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

К виртуальным машинам этого типа относятся, например: VMware Workstation, VMware Server, Serenity Virtual Station и другие.

В третьем случае, эмулируются API гостевой операционной системы. API (Application Programming Interface) – это интерфейс прикладного программирования.

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

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

Если гостевая и хостовая операционные системы - совместимы по своим API, то преобразовывать обращения - не нужно, достаточно только перенаправлять их.

К сожалению, у такой системы виртуализации есть ряд недостатков:

1. Не все программное обеспечение удается запускать на виртуальной машине с этим принципом виртуализации, так как часто используются недокументированные API и обращение напрямую к аппаратуре.

2. Операционные системы активно развиваются, вносятся корректировки в API и добавляются новые возможности, поэтому эмуляторы API быстро устаревают, и необходимы большие затраты трудоемкости для их модернизации.

3. Эмуляторы API привязываются к конкретным операционным системам, что сильно сужает круг их использования и потребительские свойства.

Однако, использование эмуляции API позволяет избежать значительных потерь производительности.

В качества примера виртуальных машин, использующих эмуляцию API, можно привести такие продукты, как:

- Wine (Wine Is Not an Emulator), используемый для запуска Dos - и Windows - приложений под управлением операционной системы Linux.

- UML (User Mode Linux), встраиваемый в ядро Linux и позволяющий запускать несколько копий операционной системы на одном компьютере.

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


Яндекс.Метрика

Рейтинг@Mail.ru