虚拟机

时间:2012-01-22 13:09:11

标签: vmware virtualization virtual-memory

我一直在试图弄清楚VMware是如何工作的(特别是安装Linux时),我有几个问题:

  1. VMware遇到像push cs这样的命令时会发生什么?特别是cs,因为它的权限级别为0,VMware运行在1个权限级别,所以我假设它不得不将其转换为其他命令。

  2. 虚拟内存:它如何在虚拟机上运行?有2个级别的翻译 - 处理虚拟内存 - >虚拟机物理内存 - >真机器物理内存?当真实机器交换页面时,如何通知VMware?

1 个答案:

答案 0 :(得分:1)

  • 大多数指令直接在CPU上运行。但是特权指令会导致异常,处理程序会模拟它们。
  • 现在我看到你对push cs例子的意思了。您的意思是指令在不同的权限级别上以静默方式表现不同。 The wikipedia article on x86 virtualization表示它们是二进制翻译的,即在主机CPU上运行代码之前有一个重新编译阶段。
  • 在较旧的x86中,vmware维护阴影页表。必须模拟访客页表,以允许vmware跟踪访客操作系统对页表的查看。较新的x86具有虚拟化扩展,可以以有效的方式允许多个级别的页表。