Виртуальная машина - модель вычислительной машины, созданной путем виртуализации вычислительных ресурсов:процессора, оперативной памяти, устройств хранения и ввода и вывода информации.
Виртуальная машина в отличие от программы эмуляции конкретного устройства обеспечивает полную эмуляцию физического машины или среды исполнения (для программы).
Определение
Ранее виртуальную машину определяли как "эффективную изолированную копию реальной машины". Однако современные виртуальные машины могут не иметь прямого аппаратного аналога. Например, в зависимости от способа моделирования набора инструкций виртуального центрального процессора, виртуальная машина может моделировать реальную или абстрактную вычислительные машины. При моделировании реальной вычислительной машины набор инструкций процессора виртуальной машины совпадает с набором инструкций выбранного для моделирования центрального процессора.
Виртуальные машины делятся на 2 главные категории, в зависимости от их использования и соответствия реальной аппаратуры:
-
системные (аппаратные) виртуальные машины, обеспечивающие полноценную эмуляцию всей аппаратной платформы и соответственно поддерживают выполнениеоперационной системы.
-
прикладные виртуальные машины, которые разработаны для выполнения только приложений (прикладных программ), например, виртуальная машина Java.
Системные виртуальные машины
Системные виртуальные машины позволяют распределение аппаратных ресурсов физической машины между разными копиями виртуальных машин, на каждой из которых может быть установлена ??своя операционная система. Пласт программного обеспечения, выполняющего виртуализацию, называется гипервизор. Гипервизор делятся на 2 типа: те, которые могут выполняться на "голой" аппаратуре ( 1-й тип, или родные (англ. native )), и те, которые выполняются в определенной операционной системе ( 2-й тип, илихостов ).
Основные преимущества системных ВМ:
-
различные операционные системы могут сосуществовать на одном компьютере, и при этом находиться в строгой изоляции друг от друга
-
ВМ могут обеспечивать расширенный набор машинных инструкций, ведь при моделировании абстрактной вычислительной машины набор инструкций процессора виртуальной машины может быть произвольным.
-
широкие возможности контроля за программами
-
легкость модификаций и восстановление
Основной недостаток:
-
виртуальная машина не такая эффективная как реальная, так как доступ к аппаратуре в ней происходит опосредованно.
Различные ВМ, на каждой из которых может быть установлена ??своя собственная ОС (также называется гостевыми ОС ), часто используются для серверного объединения : разные сервисы (которые должны выполняться на отдельных машинах, чтобы предотвратить взаемовтручанню) запускаются в разных ВМ, однако на одной физической машине, что позволяет экономить аппаратные ресурсы.
Прикладные виртуальные машины
Прикладные виртуальные машины выполняют обычные программы внутри ОС. Они обычно создаются когда программа запускается и уничтожаются после ее завершения. Их цель - обеспечить платформо-независимое программное среду, которая позволяет абстрагироваться от конкретной аппаратуры и операционной системы, на которой выполняется программа.
Прикладная ВМ обеспечивает высокоуровневую абстракцию (например, интерпретаторы высокоуровневых языков программирования - Lisp, Java, Python, Perl ), в то время как системные ВМ обычно ограничиваются низкоуровневой абстракцией (машинным набором кодов). Современные прикладные ВМ, реализуемых с помощью интерпретаторов, для повышения скорости выполнения используют компиляцию "на лету" (англ. JIT - just-in-time).
Технологии
Родная эмуляция
Этот подход заключается в простом распределении тех аппаратных ресурсов, на которых запущена ВМ. Каждая копия ВМ ограничена реальной аппаратурой. Соответственно, мы сможем использовать только те ОС, которые поддерживают нашу аппаратуру.
Неродной эмуляция
В этом случае ВМ эмулирует аппаратуру, которая может отличаться от той, на которой она запущена. Это расширяет круг ОС, которые мы можем на нее установить.
Виртуализация уровня ОС
Ядро ОС позволяет создавать много изолированных друг от друга пространств пользователей. В этом случае крах программы в одном пространстве никак не повлияет на программы в других пространствах.
Примеры и поддержка
Первой и по сей день одной из лучших операционных систем, поддерживающих концепцию виртуальной машины является операционная система VM (в пределах бывшего СССР также известная как СВМ - Система Виртуальных Машин ) фирмы IBM.
На отдельных аппаратных платформах возможна аппаратная поддержка виртуальных машин. Впервые технология аппаратной поддержки виртуальных машин была реализована в машине IBM-370 (начало 1970 гг) как возможность загрузки микропрограммного кода, который обеспечивал дополнительную функциональность центрального процессора IBM-370 для обслуживания виртуальных машин.
Одной из наиболее популярных виртуальных машин является виртуальная машина Java.
Примеры виртуальных машин:
-
Forth
-
Java Virtual Machine
-
Kaffe - свободная виртуальная машина Java
-
Dalvik - часть мобильной платформы Android
-
IBM VM (Система Виртуальных Машин, СВМ)
-
VirtualBox
-
VMware
-
Xen