二进制翻译
回答
见VMware_paravirtualization.pdf,页和。
这种方法,在图5所描绘的, 转换内核代码来替换 与具有 虚拟 硬件预期的效果的说明新 序列nonvirtualizable指令。
所以特权指令翻译成其它指令,访问虚拟BIOS,内存管理,并通过虚拟机监视器提供的设备,而不是直接在实际硬件上执行。
究竟是什么这些指令,由虚拟机实现定义。专有虚拟化软件供应商不一定会发布他们的二进制翻译技术。
二进制翻译是一种系统虚拟化技术。
在来宾操作系统的二进制敏感指令由替换任一系统管理程序调用该安全地处理这样的敏感的指令或由导致CPU陷阱一些未定义操作码。这个CPU陷阱由Hypervisor处理。
在最现代的CPU,上下文敏感的指令都是非虚拟化的。二进制翻译是一种克服这种限制的技术。
例如,如果访客想要修改/读取包含重要标志/控制位域的CPU处理器状态字,主机程序将扫描客户二进制文件中的这些指令,并将其替换为对管理程序的调用或一些虚拟操作码。在另一方面
半虚拟是其中客户OS的源代码被修改的技术。所有与系统资源访问相关的代码都使用Hypervisor API进行修改。
因此,为什么使用Para-Virtualization [更低的 “虚拟化开销”](http://www.vmware.com/files/pdf/VMware_paravirtualization.pdf)?不应该Para-Virtualization实际上有更高的**开销吗? – Pacerier 2015-04-22 06:48:58
在半虚拟化的情况下,源代码已被修改。这样的图像直接调用管理程序API。在二进制翻译的情况下,本地操作系统必须首先扫描来宾操作系统指令流,并根据需要对流进行修改。因此,在这两者之间,Para-Virtualization的开销较低。 – Raj 2015-05-24 10:46:52
@Raj 尽管para虚拟化的运行时间看起来似乎远低于运行时间开销,但它只能在'开源'系统上使用,因为管理程序必须提供自定义API,并且需要使用它们来代替操作系统的通用功能。即使您的管理程序具有统一且一致的API模型,某些系统(如常青色Windows操作系统以及Apple的操作系统)也不利于此类更改。所以它的确有它的缺点 – HighOnMeat 2015-06-08 11:36:37
- 1. 二进制翻译
- 2. Java二进制翻译?
- 3. Java二进制翻译器
- 4. 二进制翻译|交叉编译
- 5. 翻译包含二进制值,以十六进制
- 6. 十六进制翻译
- 7. Golang二进制搜索树算法翻译
- 8. C#函数来翻译二进制代码
- 9. 翻译CF的二进制编码为PHP
- 10. 翻译回一个未知的二进制文件!?可能吗?
- 11. 陷阱和模拟与二进制翻译有什么区别?
- 12. 编译matlab linux二进制
- 13. 编译二进制文件
- 14. LLVM编译JIT二进制
- 15. 角度翻译十进制数
- 16. 转换二进制到十进制和翻转0和1 JAVA
- 17. 理解类值(翻译十六进制转换为十进制)
- 18. 十进制到二进制(二进制)
- 19. 二进制运算符在Python ...翻译如果(C1> = “\ XC0” &C1 <= “\ XDF”)
- 20. pthreads编译但未创建二进制
- 21. 与Clozure Common Lisp的编译二进制
- 22. 反编译.NET 2.0二进制
- 23. pip编译vs二进制文件
- 24. 如何编译二进制文件?
- 25. php的二进制代码(编译php)
- 26. C++:二进制搜索编译错误
- 27. gdb:使用-g编译的二进制文件与使用-g编译的二进制编译的代码
- 28. GCC编译的二进制文件给予 “不能执行二进制文件”
- 29. g ++编译的二进制文件给“不能执行二进制文件”
- 30. 不同的翻译结果进行比较兵翻译
指向PDF的链接已损坏。请参阅 - https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/VMware_paravirtualization.pdf – nsane 2016-09-15 11:01:20
谢谢,修复了断开的链接。 – mizo 2016-09-19 19:46:54