Читать «Виртуальные машины: несколько компьютеров в одном» онлайн - страница 4
Алексей Константинович Гультяев
На самом деле виртуальная машина не имеет доступа к физическим ресурсам реального компьютера. Работа с ними возложена на упоминавшийся ранее МВМ, а также на еще одну служебную программу — драйвер виртуальных машин.
В упрощенном виде архитектура системы, в которой используются виртуальные машины, выглядит следующим образом (рис. 1.3):
■ хостовая ОС и монитор виртуальных машин разделяют между собой права на управление аппаратными компонентами компьютера; при этом хостовая ОС занимается распределением ресурсов между собственными приложениями (включая и консоль ВМ);
■ монитор ВМ контролирует распределение ресурсов между запущенными виртуальными машинами, создавая для них иллюзию непосредственного доступа к аппаратному уровню (этот механизм называют
■ гостевые ОС в пределах выделенных им ресурсов управляют работой «своих» приложений.
Рис. 1.3. Архитектура системы виртуальных машин
Приведенная архитектура является весьма общей. Однако представленные сегодня на рынке системы виртуальных машин имеют и существенные различия. Обусловлены они в первую очередь механизмом виртуализации, который использован в той или иной системе.
Виды виртуальных машин
Система виртуальных машин может быть построена на базе различных платформ и при помощи разных технологий. Используемая схема виртуализации зависит как от аппаратной платформы, так и от особенностей «взаимоотношений» хостовой ОС и поддерживаемых гостевых ОС. Некоторые архитектуры обеспечивают возможность виртуализации на аппаратном уровне, другие требуют применения дополнительных программных ухищрений.
В настоящее время распространение получили три схемы виртуализации:
■ эмуляция 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 гостевой ОС — это ее ориентация на конкретную операционную систему.