2012-01-22 173 views
9

我一直在试图找出VMware的是如何工作的(Linux安装特别是当),我有几个问题:虚拟机

  1. 当VMware遇到像push cs命令会发生什么事?特别是cs,因为它的特权级别是0,VMware运行在1级特权级别上,所以我假设它不得不将它翻译成其他命令。

  2. 虚拟内存:它如何在虚拟机上工作?有2级翻译 - 进程虚拟内存 - >虚拟机物理内存 - >真实机器物理内存?当真正的机器交换页面时,VMware将如何得到通知?

+1

好问题。 –

+1

完全偏离主题的问题。 – bmargulies

+1

好问题。我对答案感兴趣。 – alexy13

回答

1
  • 大多数指令直接在CPU上运行。但特权指令导致异常,处理程序模拟它们。
  • 现在我明白你的意思与push cs的例子。你的意思是在不同的权限级别上默默行为不同的指令。 The wikipedia article on x86 virtualization表示它们是二进制翻译的,即在主CPU上运行代码之前存在重新编译阶段。
  • 在较旧的x86中,vmware维护影子页表。客户页面表必须被仿真,以允许vmware跟踪客户OS具有页表的视图。较新的x86具有虚拟化扩展,可以以高效的方式允许多级页表。