Каким образом гостевые дополнения VirtualBox взаимодействуют с хостом?

Каким образом гостевые дополнения VirtualBox взаимодействуют с хостом?

Я представляю, что процесс включает в себя наблюдение за определенным шаблоном в виртуализированной памяти и его изменение, но мне интересно, как именно это работает. Возможно, новый вызов BIOS? (Похож на запрос ОС времени из RTC.) Мне интересно, потому что я задаюсь вопросом, смогу ли я сам подключиться к нему для произвольной передачи данных между хостом и клиентом.

решение1

Сначала поймите, что Virtualbox — это программа, установленная на хостовой ОС, поэтому она поставляет исполняемые файлы, библиотеки и другие ресурсы. Многие из этих библиотек будут вызывать функции и службы хостовой ОС для выполнения своей работы.

Virtualbox также устанавливает драйверы в ядро ​​ОС. Эти драйверы определяют, как ядро ​​может предоставлять аппаратные интерфейсы для уровня виртуального оборудования Virtualbox.

Виртуальный аппаратный слой находится между ОС хоста и гостем. Для хоста это просто еще одна программа, но для гостя это выглядит как настоящее оборудование.

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

Драйверы ОС обычно не подходят для Гостя или предоставляют крайне ограниченную функциональность. Гость не знает, что он VM, и не может задавать вопросы хосту. Вот почему нам нужны Guest Tools.

Guest Tools обновляет системные драйверы на соответствующие виртуализированному оборудованию и взаимодействует с поддельным оборудованием, задавая вопросы типа «какое у меня максимальное разрешение». VBox, в свою очередь, запрашивает ОС и отчитывается перед гостем.

Guest Tools также включают другие функции, такие как отображение общих папок, путем установки программного обеспечения в гостевой системе, которое может взаимодействовать с VBox. Затем VBox использует технологии ОС, такие как именованные каналы или OLE (в Windows) или сетевой IPC (Linux), для передачи данных туда и обратно между собой и хостовой ОС.

Важный вывод здесь в том, что гость не знает, что он виртуальная машина, а хост не знает о своих запущенных виртуальных машинах. Vbox находится между ними и является посредником во всех коммуникациях. Нет никакой особой зависимости от физического BIOS.

То, что может заставить вас думать о BIOS, — это Virtualization Extensions. Пожалуйста, поймите, что VT — это набор инструкций ЦП, и он не связан с BIOS. VBox запускает код, который был скомпилирован в вызовы инструкций VT (когда это уместно), чтобы он мог выполнять оптимизированные инструкции, связанные с виртуальными операциями. Опять же, хостовая ОС не имеет к этому никакого отношения.

Связанный контент