Виртуальные машины

Родственной виртуальной памяти и почти такой же старой является идея виртуальных машин – Virtual Machines (VM). Первые такие машины были разработаны в середине 1960-х годов и со временем стали широко использоваться в больших универсальных машинах. Несмотря на практически полное игнорирование виртуальных машин в области однопользовательских компьютеров в 1980-х и 1990-х годах, в последнее время они набрали популярность благодаря следующим факторам:

— Повышению важности изолирования и безопасности в современных системах.

— Промахам в безопасности и надежности стандартных операционных систем.

— Совместному использованию одного и того же компьютера многими пользователями.

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

Самое широкое определение виртуальных машин включает по существу все методы эмуляции, предоставляемые таким стандартным программным интерфейсом, как Java VM. В данном разделе наше внимание привлекут виртуальные машины, предоставляющие полноценную среду системного уровня в виде архитектуры набора двоичных инструкций – binary instruction set architecture (ISA). Хотя некоторые виртуальные машины запускают в своей среде наборы ISA отличающиеся от наборов исходного оборудования, мы будет предполагать, что эти наборы всегда соответствуют наборам оборудования. Такие виртуальные машины называются (операционными) системами виртуальных машин. Примерами могут послужить IBM VM/370, VMware ESX Server и Xen.

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

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

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

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

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





Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: