VMM捕获特权指令并使用二进制翻译进行翻译,但实际上是这些特殊指令被翻译成什么?
由于
答案 0 :(得分:21)
二进制翻译是一种系统虚拟化技术。
Guest OS二进制文件中的敏感指令被安全处理此类敏感指令的Hypervisor调用或导致CPU陷阱的某些未定义操作码所取代。这样的CPU陷阱由Hypervisor处理。
在大多数现代CPU上,上下文相关指令是不可虚拟化的。二元翻译是一种克服这种限制的技术。
例如,如果访客想要修改/读取包含重要标志/控制位域的CPU处理器状态字,则主程序将扫描来宾二进制文件以获取此类指令,并将其替换为对虚拟机管理程序或某些虚拟控制器的调用。操作码。
另一方面,Para-Virtualization是一种修改guest虚拟机操作系统的源代码的技术。所有与系统资源访问相关的代码都使用Hypervisor API进行修改。
答案 1 :(得分:14)
请参阅VMware_paravirtualization.pdf,页面 3 和 4 。
这种方法,如图5所示, 翻译内核代码以替换 新的非可虚拟化指令 具有的指令序列 预期对虚拟的影响 硬件
因此,特权指令被转换为其他指令,这些指令访问虚拟机监视器提供的虚拟BIOS,内存管理和设备,而不是直接在真实硬件上执行。
这些指令究竟是什么,由VM实现定义。专有虚拟化软件的供应商不一定发布他们的二进制翻译技术。