Как мы и обещали, сегодня мы продолжим разговор на интересную тему виртуализации. Виртуализация – это одна из наиболее сложных и полезных технологий. Давайте разберемся в том, как работают виртуальные машины, и узнаем принцип работы виртуальных машин.
Виртуальная машина, которая используется пользователем, по своей сути создает специальное (особое) окружение для операционной системы и программного обеспечения, запускаемого в ней. Это особое окружение практически не чем не отличается от самого настоящего компьютера. Как и компьютер, виртуальное окружение состоит из виртуального жесткого диска, процессора, видеокарты, контроллеров устройств, оперативной памяти и тп. При этом виртуальная машина может одновременно с ПК взаимодействовать с реальными устройствами, например, такими как DVD-привод, USB-флэшка, веб-камера…
Операционная система, в которой включается виртуальная машина (окружение) принято называть – основной или “хостом”; а система, установленная на виртуальной машине именуется как гостевая ОС.
Виртуальные компоненты (процессор, оперативная память и другие устройств), при создании окружения, создает так называемый монитор виртуальной машины (Virtual Machine Monitor — VMM), также данный монитор еще называют гипервизором. Гипервизор является ключевым компонентом для абсолютно всех виртуальных сред, с помощью которых выполняется изоляция основной операционной системы (хоста) от гостевой. Кроме того, именно гипервизор отвечает за получение и разделение ресурсов компьютера между запущенными системами. Если говорить иначе, то именно от работы Virtual Machine Monitor полностью зависит правильная и стабильная работа гостевой ОС. При всем при этом, гостевая операционная система в большинстве случаев вообще не подозревает о существовании гипервизора, и думает, что она работает на обычном железе. Собственно говоря, этот “обман” являете основой технологии виртуализации (имеется ввиду ее домашнее использование).
Бывают такие ситуации, когда система сообщает виртуальной машине о нереальности ее окружения и дает возможность гостевой ОС напрямую взаимодействовать с VMM (гипервизором), в таком случае уже не стоит называть ее виртуализацией – это уже другая технология, называемая паравиртуализацией. Для использования данной технологии требуется внесение некоторых изменений в ядро операционной системы. Именно по этой причине не паравиртуализация применяется исключительно в ОС с открытым исходным кодом, к которым как нам всем давно известно не относятся системы от Microsoft и Apple.
Поскольку технология виртуализации относится к достаточно сложным, одной из главных задач разработчиков, создающих решения для виртуализации является контроль исполнения кода гостевой операционной системы. Современные ОС устроены так, что не могут существовать без проблем в рамках одного компьютера, и если попробовать исполнять их код в таком виде как он есть, то такой эксперимент не приведет ни к чему хорошему. Вместо привычной и комфортной рабочей среды, пользователь получит постоянно зависающую, постоянно перезагружающуюся рабочую среду, или такую рабочую среду, в которой будет только “синий экран смети” и больше ничего. Чтобы пользователю не сталкиваться со всеми перечисленными выше проблемами, решения для виртуализации не позволяют гостевой ОС получить прямой доступ к управлению аппаратными ресурсами компьютера и получению данных о реальном состоянии системы. Другими словами, все строится на обмане, гостевой ОС подсовывают те значения регистров состояния процессора, памяти и других компонентов, которые она должна видеть, чтобы работать стабильно и правильно.
Есть два способа, с помощью которых обманывают гостевую ОС: бинарная трансляция и поддержка аппаратной виртуализации. Редко, но все же, к этим способам еще причисляют и паравиртуализацию, но как мы уже писали выше, технология паравертуализации подразумевает под собой, что гостевая ОС знает о существовании гипервизора и умеет с ним взаимодействовать. По этой причине паравертуализация очень слабо относится к виртуальным машинам и о ней говорить мы не будем.
Надеемся хотя бы в общих чертах, но нашим читателям стало понятно, как работают виртуальные машины и на каком принципе основывается их работа.