Я предполагаю, что процесс включает в себя наблюдение за каким-то конкретным шаблоном в виртуализированной памяти и его изменение, но мне интересно, как именно он работает. Возможно, новый вызов биоса сортов? (Подобно тому, как ОС запрашивает время у RTC.) Я заинтересован, потому что мне интересно, мог бы я сам подключиться к нему для произвольной передачи данных между хостом и клиентом.
1 ответ
Сначала поймите, что Virtualbox - это программа, установленная на хост-ОС, поэтому она поставляет исполняемые файлы, библиотеки и другие ресурсы. Многие из этих библиотек будут вызывать функции и сервисы хост-ОС для выполнения своей работы.
Virtualbox также устанавливает драйверы в ядро ОС. Эти драйверы определяют, как ядро может предоставлять аппаратные интерфейсы для уровня Virtual Hardware на уровне Virtualbox.
Уровень виртуального оборудования находится между ОС хоста и гостем. Для Хоста это просто еще одна программа, но для Гостя это похоже на настоящее оборудование.
Важно понимать, что Virtualbox как программа выполняется в то время, как гость, но эти две вещи делают совершенно разные вещи. Virtualbox работает с хостом при представлении поддельного компьютера гостю, тогда как гость просто работает как ОС на поддельном оборудовании.
Драйверы ОС обычно не подходят для Гостя или представляют крайне ограниченную функциональность. Гость не знает, что это виртуальная машина, и не может задавать вопросы хосту. Вот почему нам нужны гостевые инструменты.
Гостевые инструменты обновляют системные драйверы драйверами, подходящими для виртуализированного оборудования, и связываются с поддельным оборудованием, чтобы задавать вопросы типа "каково мое максимальное разрешение". VBox, в свою очередь, запрашивает ОС и сообщает об этом гостю.
Гостевые инструменты также включают другие функции, такие как сопоставление общих папок, устанавливая программное обеспечение в гостевой системе, которое может взаимодействовать с VBox. Затем VBox использует технологии ОС, такие как именованные каналы или ole (в Windows) или сетевой IPC (Linux), для передачи данных назад и вперед между собой и ОС хоста.
Важным выводом здесь является то, что гость не знает, какая у него виртуальная машина, а хост не знает, какие у нее запущенные виртуальные машины. Vbox сидит между двумя и посредниками в общении. Не существует особой зависимости от физического BIOS.
Что может заставить вас думать о BIOS - это расширения виртуализации. Пожалуйста, поймите, что VT представляет собой набор инструкций процессора и не связан с BIOS. VBox запускает код, который был скомпилирован в вызовы инструкций VT (при необходимости), чтобы он мог выполнять оптимизированные инструкции, связанные с виртуальными операциями. Еще раз, хост-ОС имеет мало общего с этим.