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

0

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

TheWhoAreYouPerson
источник
"Может быть, новый вызов биос рода? - Этого абсолютно не происходит. VirtualBox - это гипервизор 2-го типа, как хорошо взаимодействует гостевая ОС с операционной системой хоста.
Ramhound
Спасибо за понимание биты Гипервизора 2-го типа, который действительно привел меня к более подробной информации о том, как работают виртуальные машины. Однако это все еще не объясняет, как данные, такие как геометрия экрана, буфер обмена, перетаскивание и т. Д., Передаются между ними. Я понимаю, что такие вещи, как мышь и клавиатура могут передаваться через уровень ОС, но как насчет этих дополнительных данных? Особенно, когда хост и гостевая ОС различаются, вы не можете 1: 1 реплицировать эти вызовы ОС.
TheWhoAreYouPerson
Есть программный слой. VirtualBox просто связывается с этим уровнем. Он также может связываться с самим оборудованием, если поддерживаются расширения виртуализации.
Ramhound
Я хотел задать свой вопрос как гость общается с хозяином, будучи задействованной технологией, а не просто тем, что может. Предположительно, VBox / others имеют несколько уровней (то, что vbox называет «Гостевые дополнения над гостевой виртуальной машиной», гостевой, BIOS, предоставленный VMM) (который, вероятно, является той частью, которая связывается с ОС, являясь портом экрана / мыши / клавиатуры / ввода-вывода). «Форвардер»), ОС и т. д. Я понимаю, что VMM связывает аппаратные средства / экран / и т. д. через этот пользовательский BIOS, но куда отправляются пользовательские данные? Какой-то пользовательский «физический» (виртуальный) порт? Манипуляции с памятью? и т. д.
TheWhoAreYouPerson
«Я понимаю, что VMM связывается с оборудованием / экраном / и т. Д. Через этот пользовательский BIOS, но куда отправляются пользовательские данные» - это неверно. Это не то, как работают расширения x86 Virtualization.
Ramhound

Ответы:

2

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

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

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

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

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

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

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

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

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

Frank Thomas
источник
(Я имел в виду i.imgur.com/Ary3JSW.png когда я сказал BIOS, кстати. Теперь я вижу, что это не так. Меня смутило, так как на первый взгляд он выглядит как BIOS и мигает) Из-за того, что я немного читал об этом немного раньше, я подумал, что должно быть несколько инструкций ЦП, касающихся запуска ВМ, но я понятия не имел они также имели дело с данными, только перми. Насколько я могу судить (начиная с Википедии), процесс связи между гостем и гипервизором - это, в основном, несколько инструкций для получения / установки данных, и несколько инструкций для instr. переместить exec. контекст. Пожалуйста, поправьте меня, если я ошибаюсь :)
TheWhoAreYouPerson