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

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

1 ответ

Решение

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

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

Уровень виртуального оборудования находится между ОС хоста и гостем. Для Хоста это просто еще одна программа, но для Гостя это похоже на аппаратное обеспечение.

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

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

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

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

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

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

Другие вопросы по тегам