двоичный перевод - PullRequest
14 голосов
/ 15 мая 2011

VMM перехватывает привилегированные инструкции, и они переводятся с использованием бинарного перевода, но на самом деле в , на что эти специальные инструкции переведены?

Спасибо

Ответы [ 2 ]

21 голосов
/ 24 октября 2012

Двоичный перевод - это метод виртуализации системы.

Чувствительные инструкции в двоичном файле гостевой ОС заменяются либо вызовами гипервизора, которые безопасно обрабатывают такие чувствительные инструкции, либо некоторыми неопределенными кодами операций, которые приводят к перехвату ЦП.Такая ловушка ЦП обрабатывается гипервизором.

На большинстве современных ЦП контекстно-зависимые инструкции не виртуализируются.Бинарный перевод - это метод преодоления этого ограничения.

Например, если Гость хотел изменить / прочитать Слово состояния процессора ЦП, содержащее важные флаги / битовые поля управления, программа Хост проверит бинарный файл гостя на наличие такихинструкции и замените их либо вызовом гипервизора, либо каким-то фиктивным кодом операции.

Пара-виртуализация, с другой стороны, - это метод, при котором изменяется исходный код гостевой ОС.Весь код, связанный с доступом к системным ресурсам, модифицируется с помощью API гипервизора.

14 голосов
/ 16 мая 2011

См. VMware_paravirtualization.pdf , страницы 3 и 4 .

Этот подход, изображенный на рисунке 5, переводит ядрокод для замены не виртуализируемых инструкций новыми последовательностями инструкций, которые оказывают предполагаемое влияние на виртуальное оборудование.

Таким образом, привилегированные инструкции преобразуются в другие инструкции, которые обращаются к виртуальному BIOS, управлению памятью и устройствам.предоставляемый монитором виртуальной машины вместо непосредственного выполнения на реальном оборудовании.

Именно то, что представляют собой эти инструкции, определяется реализацией виртуальной машины.Производители проприетарного программного обеспечения для виртуализации не обязательно публикуют свои методы бинарного перевода.

...