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

486
TheWhoAreYouPerson

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

0
"Может быть, новый вызов биос рода? - Этого абсолютно не происходит. VirtualBox - это гипервизор 2-го типа, как хорошо взаимодействует гостевая ОС с операционной системой хоста. Ramhound 7 лет назад 0
Спасибо за понимание биты Гипервизора 2-го типа, который действительно привел меня к более подробной информации о том, как работают виртуальные машины. Однако это все еще не объясняет, как данные, такие как геометрия экрана, буфер обмена, перетаскивание и т. Д., Передаются между ними. Я понимаю, что такие вещи, как мышь и клавиатура могут передаваться через уровень ОС, но как насчет этих дополнительных данных? Особенно, когда хост и гостевая ОС различаются, вы не можете 1: 1 реплицировать эти вызовы ОС. TheWhoAreYouPerson 7 лет назад 0
Есть программный слой. VirtualBox просто связывается с этим уровнем. Он также может связываться с самим оборудованием, если поддерживаются расширения виртуализации. Ramhound 7 лет назад 0
Я задал вопрос на вопрос, ** как ** гость общается с хостом, будучи задействованной технологией, а не просто тем, что может. Предположительно, VBox / others имеют несколько уровней (то, что vbox называет «Гостевые дополнения над гостевой виртуальной машиной», гостевой, BIOS, предоставленный VMM) (который, вероятно, является той частью, которая связывается с ОС, являясь портом экрана / мыши / клавиатуры / ввода-вывода «Форвардер»), ОС и т. д. Я понимаю, что VMM связывает аппаратное обеспечение / экран / и т. д. через этот пользовательский BIOS, но куда отправляются пользовательские данные? Какой-то пользовательский «физический» (виртуальный) порт? TheWhoAreYouPerson 7 лет назад 0
«Я понимаю, что VMM связывается с оборудованием / экраном / и т. Д. Через этот пользовательский BIOS, но куда отправляются пользовательские данные» - это неверно. Это не то, как работают расширения x86 Virtualization. Ramhound 7 лет назад 0
Там могут быть некоторые ответы в [VMMDev.cpp] (https://www.virtualbox.org/browser/vbox/trunk/src/VBox/Devices/VMMDev/VMMDev.cpp). Похоже, они эмулируют нестандартное аппаратное устройство, единственной целью которого является связь между хостом и гостем. Хост отправляет данные с использованием системы прерываний, как мышь / клавиатура или сетевая карта. Daniel Stevens 7 лет назад 0

1 ответ на вопрос

2
Frank Thomas

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

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

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

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

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

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

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

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

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

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

Похожие вопросы