Виртуальные машины - PullRequest
       27

Виртуальные машины

9 голосов
/ 22 января 2012

Я пытался выяснить, как работает VMware (особенно при установке Linux), и у меня есть пара вопросов:

  1. Что происходит, когда VMware встречает команду типа push cs? В частности, cs, поскольку его уровень привилегий равен 0, а VMware работает на 1 уровне привилегий, поэтому я предполагаю, что ему каким-то образом придется преобразовать его в какую-то другую команду.

  2. Виртуальная память: как она работает на виртуальной машине? Есть ли 2 уровня перевода - виртуальная память процесса -> физическая память виртуальной машины -> физическая память реальной машины? Как VMware получит уведомление, когда страница будет заменена реальной машиной?

1 Ответ

1 голос
/ 22 января 2012
  • Большинство инструкций выполняются непосредственно на процессоре.Но привилегированные инструкции вызывают исключение, обработчик эмулирует их.
  • Теперь я понимаю, что вы имеете в виду на примере push cs.Вы имеете в виду инструкции, которые молча ведут себя по-разному на разных уровнях привилегий. В статье в Википедии о виртуализации x86 говорится, что они переводятся в двоичном формате, т. Е. Перед запуском кода на центральном процессоре есть фаза перекомпиляции.
  • В старых версиях x86 vmware поддерживает таблицы теневых страниц.Таблицы гостевой страницы должны быть эмулированы, чтобы позволить vmware отслеживать представление гостевой ОС таблиц страниц.Более новые x86 имеют расширения виртуализации, которые позволяют эффективно использовать несколько уровней таблиц страниц.
...