二进制翻译

use*_*444 14 virtualization vmware

VMM捕获特权指令并使用二进制翻译进行翻译,但实际上这些特殊指令被翻译成什么?

谢谢

Raj*_*Raj 21

二进制翻译是一种系统虚拟化技术.

Guest OS二进制文件中的敏感指令被安全处理此类敏感指令的Hypervisor调用或导致CPU陷阱的某些未定义操作码所取代.这种CPU陷阱由Hypervisor处理.

在大多数现代CPU上,上下文敏感指令是不可虚拟化的.二进制翻译是克服此限制的技术.

例如,如果访客想要修改/读取包含重要标志/控制位域的CPU处理器状态字,则主程序将扫描来宾二进制文件以获取此类指令,并用调用管理程序或某些虚拟操作码替换它们.

另一方面,Para-Virtualization是一种修改guest OS的源代码的技术.使用Hypervisor API修改所有与系统资源访问相关的代码.

  • 在半虚拟化的情况下,源代码已经被修改。这样的镜像直接调用虚拟机管理程序API。在二进制翻译的情况下,本机操作系统必须首先扫描客户操作系统指令流并根据需要对该流进行修改。因此,在两者之间,半虚拟化的开销较低。 (3认同)
  • @Raj虽然半虚拟化似乎确实具有明显低得多的运行时间开销,但它**只能**在“开源”系统上使用,因为虚拟机管理程序必须提供自定义API,并且需要使用它们而不是操作系统的API通用函数。即使您的虚拟机管理程序具有统一且一致的 API 模型,某些系统(例如常青的 Windows 操作系统以及 Apple 操作系统)也不利于此类更改。所以它确实有它的缺点 (2认同)

miz*_*izo 14

请参见VMware_paravirtualization.pdf,第3页和第4页.

这种方法(如图5所示)转换内核代码,用新的指令序列替换非虚拟化指令,这些指令对虚拟硬件有预期的影响.

因此,特权指令被转换为其他指令,这些指令访问虚拟机监视器提供的虚拟BIOS,内存管理和设备,而不是直接在真实硬件上执行.

这些指令究竟是什么,由VM实现定义.专有虚拟化软件的供应商不一定发布他们的二进制翻译技术.

  • PDF 链接已损坏。请参阅 - https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/VMware_paravirtualization.pdf (2认同)