Концепция виртуальной машины была предложена около 1960 года. Это развитие метода разделения времени (time-sharing). При разделении времени каждая программа имеет полный доступ ко всем ресурсам компьютера, но в каждый момент времени выполняется только одна программа. Система переключается между программами в тайм-слотах, каждый раз сохраняя и восстанавливая их состояние. Благодаря этому методу несколько пользователей могут одновременно работать с компьютерной системой. Исследовательские центры IBM развили метод разделения времени до концепции виртуальных машин. CP-67 стала первой доступной архитектурой виртуальной машины. Были разработаны системы с несколькими виртуальными машинами на одном хосте, а также с одной виртуальной машиной, работающей на нескольких хостах.

Перед запуском любых новых аппаратных технологий их сначала тестируют в эмуляторе, чтобы выявить, воспроизвести и устранить ошибки в проекте и предпринять необходимые меры. Аналогично, перед внедрением нового программного обеспечения его моделируют, чтобы проверить наличие ошибок и произвести отладку. Для этого используется система, которая может выступать в качестве замены основной среды для создания новых технологий. Здесь и появляются виртуальные машины – они эмулируют работу компьютерной системы, предоставляя весь функционал физической системы.
Что такое виртуальная машина?
С появлением новых технологий и исследовательских моделей постоянно выпускается множество аппаратных и программных продуктов. Многие программы зависят от платформы, поэтому иногда их сложно тестировать или отлаживать из-за ограниченных аппаратных ресурсов.
Виртуальная машина (VM) – это эмуляция компьютерной системы, использующая компьютерные архитектуры для предоставления функционала физического компьютера. Физическое устройство, на котором работают виртуальные машины, называется хостом, а сами виртуальные машины называются гостями. Один хост может содержать множество гостей.
Виды виртуальных машин
Виртуальная машина работает как полноценный компьютер и изолирована от остальной части хост-системы. Программное обеспечение внутри гостевой среды не может вносить изменения в программное обеспечение хоста. Благодаря этому можно, например, безопасно тестировать вирусные файлы, не затрагивая основную систему. Программное обеспечение, создающее и управляющее виртуальной машиной, называется гипервизором.
Существует два основных типа виртуальных машин:
-
Системные виртуальные машины
Эти VM обеспечивают полную виртуализацию. Выступая в роли аналога реальной машины, они позволяют запускать полноценную операционную систему. Аппаратные ресурсы разделяются и управляются, формируя несколько сред на одном хосте. Эти среды изолированы друг от друга, но существуют на одном физическом компьютере. Таким образом, они обеспечивают разделение времени между несколькими операционными системами, выполняющими отдельные задачи.
Для совместного использования памяти разными виртуальными машинами может применяться механизм memory overcommitment. Страницы памяти с одинаковым содержимым могут использоваться несколькими VM на одном хосте. Это особенно полезно для страниц только для чтения. -
Процессные виртуальные машины
Также известны как виртуальные машины приложений или среды управляемого выполнения. Такие VM запускаются как обычное приложение в операционной системе хоста и поддерживают один процесс. Виртуальная машина создается при запуске процесса и уничтожается при его завершении.
Они используются для предоставления платформонезависимой программной среды, позволяя процессу одинаково выполняться на любых платформах.
Обычно реализуются с помощью интерпретаторов и предоставляют высокоуровневую абстракцию. Особенно распространены для Java – программы запускаются через Java Virtual Machine.
Есть особый вариант процессной VM, абстрагирующей механизм взаимодействия в компьютерном кластере. В этом случае на каждую физическую машину в кластере приходится один процесс. Это позволяет программисту сосредоточиться на алгоритме, а не на реализации коммуникаций. Примеры – Parallel Virtual Machine (PVM), Message Passing Interface (MPI).
Архитектура
Runtime software (программное обеспечение среды выполнения) – это виртуализационное ПО, реализующее процессные VM. Оно работает на уровне API компьютерной архитектуры, над общей прослойкой ОС и аппаратуры. Оно эмулирует инструкции пользовательского уровня, а также вызовы операционной системы и библиотек.
Для системных виртуальных машин виртуализационное ПО называется монитор виртуальных машин (VMM). Оно находится между аппаратным обеспечением хоста и программным обеспечением гостя. VMM эмулирует аппаратную ISA (архитектуру набора команд), позволяя гостевому ПО использовать иную ISA.
Преимущества
Некоторые из преимуществ виртуальных машин:
-
Совместимость ПО – программы, написанные для виртуализированного хоста, также будут работать в виртуальной машине.
-
Изоляция – процессы и ОС в одной виртуальной машине не могут изменять процессы других VM или хоста.
-
Инкапсуляция и управление ПО – программное обеспечение в VM можно гибко контролировать и изменять.
-
Многооперационные хосты – не требуется двойная загрузка, можно передавать файлы между VM, сбой одной ОС не затронет другие, легко добавлять «чистые» ОС.
-
Управление ПО – можно запускать весь стек ПО хоста, использовать старые ОС и т.д.
-
Гибкость ресурсов – возможно совместное использование аппаратных ресурсов независимыми ПО-стеками, а также перенос VM между машинами для балансировки нагрузки.
Современные вычислительные системы становятся все более сложными и содержат множество взаимосвязанных программных и аппаратных компонентов. Здесь виртуализация выступает связующей технологией. Виртуальные машины позволяют несовместимым подсистемам взаимодействовать, обеспечивая более эффективное использование аппаратных ресурсов и совместимость между оборудованием, системным ПО и приложениями.