Виртуальные машины (Гультяев А.) (953916), страница 2
Текст из файла (страница 2)
Помимо этих общих свойств, конкретный программный продуктобладает, как правило, индивидуальными особенностями, призванными ПОЕЫсить его привлекательность в сравнении с конкурирующими изделиями.гаНа веб-сайтах разработчиков виртуальных машин можно найти многочисленные примеры использования технологии таких машин различными известнымикомпаниями. Так, виртуальные машины VMware используются компаниейSymantec для тестирования сетевых антивирусных пакетов; программисты юпулярной поисковой системы Google применяют виртуальные машины VMwareдля оценки эффективности работы Google с разными веб-браузерами и на разных платформах.Как работает виртуальная машинаНачнем с уточнения терминов.ТерминологияС точки зрения пользователя, виртуальная машина (ВМ) — это конкретныйэкземпляр некой виртуальной вычислительной среды («виртуального комгиютера»), созданный с помощью специального программного инструмента.
Обычно такие инструменты позволяют создавать и запускать произвольное числовиртуальных машин, ограничиваемое лишь физическими ресурсами реальногокомпьютера.Как работает виртуальная машина9Собственно инструмент для создания ВМ (его иногда называют приложениемвиртуальных машин, или ПВМ) — это обычное приложение, устанавливаемое,как и любое другое, на конкретную реальную операционную систему. Эта реальная ОС именуется «хозяйской», или хостовой, ОС (от англ. термина host —«главный», «базовый», «ведущий»).Все задачи по управлению виртуальными машинами решает специальный модуль в составе приложения ВМ — монитор виртуальных машин (МВМ). Монитор играет роль посредника во всех взаимодействиях между виртуальными машинами и базовым оборудованием, поддерживая выполнение всех созданныхВМ на единой аппаратной платформе и обеспечивая их надежную изоляцию.Пользователь не имеет непосредственного доступа к МВМ.
В большинстве программных продуктов ему предоставляется лишь графический интерфейс длясоздания и настройки виртуальных машин (рис. 1.2). Этот интерфейс обычноназывают консолью виртуальных машин.Рис. 1.2. Пример консоли виртуальных машин«Внутри» виртуальной машины пользователь устанавливает, как и на реальномкомпьютере, нужную ему операционную систему. Такая ОС, принадлежащаяконкретной ВМ, называется гостевой (guest OS). Перечень поддерживаемыхгостевых ОС является одной из наиболее важных характеристик виртуальноймашины. Наиболее мощные из современных виртуальных машин (представленные в данной книге) обеспечивают поддержку около десятка популярных версий операционных систем из семейств Windows, Linux и MacOS.Виртуальная машина изнутриКогда виртуальная машина создана и запущена, у пользователя может возникнуть полная иллюзия того, что он работает с автономным компьютером, имеющим собственные процессор, оперативную память, видеосистему и (как правило)«стандартный» набор внешних устройств, включая флоппи-дисковод и устройство чтения CD/DVD.На самом деле виртуальная машина не имеет доступа к физическим ресурсамреального компьютера.
Работа с ними возложена на упоминавшийся ранее МВМ,а также на еще одну служебную программу — драйвер виртуальных машин.10Глава 1. Знакомство с технологией виртуальных машинВ упрощенном виде архитектура системы, в которой используются виртуальныемашины, выглядит следующим образом (рис. 1.3):11 хостовая ОС и монитор виртуальных машин разделяют между собой правана управление аппаратными компонентами компьютера; при этом хостоваяОС занимается распределением ресурсов между собственными приложениями (включая и консоль ВМ);т монитор ВМ контролирует распределение ресурсов между запущеннымивиртуальными машинами, создавая для них иллюзию непосредственногодоступа к аппаратному уровню (этот механизм называют виртуализацией);т гостевые ОС в пределах выделенных им ресурсов управляют работой «сзоих» приложений.Приложениягостевой ОС 1ПриложениягостевойОС 2ПриложениягостевойОС 3Рис.
1.3. Архитектура системы виртуальных машинПриведенная архитектура является весьма общей. Однако представленные сегодня на рынке системы виртуальных машин имеют и существенные различая.Обусловлены они в первую очередь механизмом виртуализации, который лспользован в той или иной системе.Виды виртуальных машинСистема виртуальных машин может быть построена на базе различных платформ и при помощи разных технологий.
Используемая схема виртуализации за-Виды виртуальных машин11висит как от аппаратной платформы, так и от особенностей «взаимоотношений»хостовой ОС и поддерживаемых гостевых ОС. Некоторые архитектуры обеспечивают возможность виртуализации на аппаратном уровне, другие требуют применения дополнительных программных ухищрений.В настоящее время распространение получили три схемы виртуализации:И эмуляция API гостевой ОС;Ш полная эмуляция гостевой ОС;Ш квазиэмуляция гостевой ОС.Виртуальные машины с эмуляцией APIгостевой ОСОбычно приложения работают в изолированном адресном пространстве и взаимодействуют с оборудованием при помощи интерфейса API (Application Programming Interface — интерфейс прикладного программирования), предоставляемого операционной системой.
Если две операционные системы совместимыпо своим интерфейсам API (например, Windows 98 и Windows ME), то приложения, разработанные для одной из них, будут работать и на другой. Если двеоперационные системы несовместимы по своим интерфейсам API (например,Windows 2000 и Linux), то необходимо обеспечить перехват обращений приложений к API гостевой ОС и сымитировать ее поведение средствами хостовойОС. При таком подходе можно установить одну операционную систему и работать одновременно как с ее приложениями, так и с приложениями другой операционной системы.Поскольку весь код приложения исполняется без эмуляции, а эмулируютсялишь вызовы API, такая схема виртуализации приводит к незначительной потере в производительности виртуальной машины.
Однако из-за того, что многиеприложения используют недокументированные функции API или обращаютсяк операционной системе в обход API, даже очень хорошие эмуляторы API имеют проблемы совместимости и позволяют запускать не более 70 % от общегочисла приложений. Кроме того, поддерживать эмуляцию API бурно развивающейся операционной системы (например, такой как Windows) очень нелегко,и большинство эмуляторов API так и остаются эмуляторами какой-то конкретной версии операционной системы.
Так, в Windows NT/2000 до сих пор встроенэмулятор для приложений OS/2 версии 1.x. Но самый большой недостаток ВМс эмуляцией API гостевой ОС — это ее ориентация на конкретную операционную систему.Примеры продуктов, выполненных по технологии эмуляции API гостевой ОС:• проект с открытым кодом Wine (Wine Is Not an Emulator, «Wine — это неэмулятор»), позволяющий запускать DOS-, Winl6- и Win32-пpилoжeнияпод управлением операционных системам Linux и Unix;• продукт Win4Lin компании Netraverse, позволяющий запускать операционныесистемы семейства Windows под управлением операционной системы Linux;• проект с открытым кодом DOSEMU, позволяющий запускать DOS-приложения под управлением операционной системы Linux;12Глава 1. Знакомство с технологией виртуальных машин1! проект с открытым кодом User Mode Linux (UML), позволяющий запускстьнесколько копий операционной системы Linux на одном компьютере (в пастоящее время встроен в ядро Linux версии 2.6);ж технология Virtuozzo, разработанная российской компанией SWsoft и позволяющая запускать несколько копий операционной системы Linux на однэмкомпьютере.Виртуальные машины с полной эмуляциейгостевой ОСПроекты, поддерживающие технологию полной эмуляции, работают по принтипу интерпретации инструкций из системы команд гостевой ОС.
Поскольку приэтом полностью эмулируется поведение как процессора, так и всех внешнихустройств, то существует возможность эмулировать компьютер с архитектур эйIntel x86 на компьютерах с совершенно другой архитектурой, например на рабочих станциях Мае или на серверах Sun с RISC-процессорами.Главный недостаток полной эмуляции заключается в существенной потере производительности гостевой операционной системы (скорость работы «гостевых»приложений может упасть в 100-1000 раз).
Поэтому до недавнего времени ВМс полной эмуляцией чаще всего использовались в качестве низкоуровневыхотладчиков для исследования и трассировки операционных систем. Однако благодаря значительному росту вычислительных мощностей даже «настольных»компьютеров ВМ с полной эмуляцией стали сегодня вполне конкурентоспособными. Наиболее яркий представитель этого вида ВМ — продукт Virtual PCфирмы Connectix (ныне купленной Microsoft), который подробно описан в главе 2 книги.
В качестве других примеров проектов, выполненных по технолог-шполной эмуляции, можно назвать следующие:Ш проект с открытым кодом Bochs, позволяющий запускать различные операционные системы Intel x86 под Linux, Windows, BeOS и Mac OS;II продукт Simics компании Virtutech, позволяющий запускать и отлаживать н а личные операционные системы Intel x86 под управлением Windows и другихоперационных систем;и проект Qemu — эмулятор различных архитектур на PC.Виртуальные машины с квазиэмуляциейгостевой ОСТехнология квазиэмуляции гостевой ОС основана на том, что далеко не все инструкции гостевой ОС нуждаются в эмуляции средствами хостовой операциснной системы.