2011-05-15 103 views
11

的VMM俘获特权指令和他们使用的二进制翻译翻译,但实际上进入这些是什么特殊说明翻译成?二进制翻译

感谢

回答

11

VMware_paravirtualization.pdf,页和。

这种方法,在图5所描绘的, 转换内核代码来替换 与具有 虚拟 硬件预期的效果的说明新 序列nonvirtualizable指令。

所以特权指令翻译成其它指令,访问虚拟BIOS,内存管理,并通过虚拟机监视器提供的设备,而不是直接在实际硬件上执行。

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

+1

指向PDF的链接已损坏。请参阅 - https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/VMware_paravirtualization.pdf – nsane 2016-09-15 11:01:20

+0

谢谢,修复了断开的链接。 – mizo 2016-09-19 19:46:54

18

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

在来宾操作系统的二进制敏感指令由替换任一系统管理程序调用该安全地处理这样的敏感的指令或由导致CPU陷阱一些未定义操作码。这个CPU陷阱由Hypervisor处理。

在最现代的CPU,上下文敏感的指令都是非虚拟化的。二进制翻译是一种克服这种限制的技术。

例如,如果访客想要修改/读取包含重要标志/控制位域的CPU处理器状态字,主机程序将扫描客户二进制文件中的这些指令,并将其替换为对管理程序的调用或一些虚拟操作码。在另一方面

半虚拟是其中客户OS的源代码被修改的技术。所有与系统资源访问相关的代码都使用Hypervisor API进行修改。

+0

因此,为什么使用Para-Virtualization [更低的 “虚拟化开销”](http://www.vmware.com/files/pdf/VMware_paravirtualization.pdf)?不应该Para-Virtualization实际上有更高的**开销吗? – Pacerier 2015-04-22 06:48:58

+0

在半虚拟化的情况下,源代码已被修改。这样的图像直接调用管理程序API。在二进制翻译的情况下,本地操作系统必须首先扫描来宾操作系统指令流,并根据需要对流进行修改。因此,在这两者之间,Para-Virtualization的开销较低。 – Raj 2015-05-24 10:46:52

+1

@Raj 尽管para虚拟化的运行时间看起来似乎远低于运行时间开销,但它只能在'开源'系统上使用,因为管理程序必须提供自定义API,并且需要使用它们来代替操作系统的通用功能。即使您的管理程序具有统一且一致的API模型,某些系统(如常青色Windows操作系统以及Apple的操作系统)也不利于此类更改。所以它的确有它的缺点 – HighOnMeat 2015-06-08 11:36:37