首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有硬件支持的情况下实现机器虚拟化?

如何在没有硬件支持的情况下实现机器虚拟化?
EN

Stack Overflow用户
提问于 2015-06-04 10:46:04
回答 2查看 1.1K关注 0票数 3

这与机器虚拟化有关。我正在经历虚拟化,并了解到在硬件辅助虚拟化技术中,特权指令是通过陷阱-故障方法识别的,并被等效的用户级指令实时替换。但是在缺乏硬件支持的情况下,虚拟化是如何实现的呢?在英特尔VTi或AMD之前,特权指令是如何被软件本身束缚的?在任何地方都使用“二进制翻译”这个术语,它可以用用户指令代替特权指令,但是如何使用虚拟化工具(hypervisor/vmm)来识别客户操作系统运行的特权指令呢?

编辑:有些人认为这个问题并没有表现出研究的努力,而是投了反对票。这些是我看过的一些文件

概述:https://www.vmware.com/pdf/virtualization.pdf

英特尔文档:Virtualization.pdf

诱导:http://www.kernelthread.com/publications/virtualization/

x86虚拟化虚拟化

hw虚拟化的比较:adams.pdf

螺母和螺栓:http://www.anandtech.com/show/2480

半虚拟化:http://en.wikipedia.org/wiki/Paravirtualization

如果有人有任何可以回答上述问题的文件/资料来源,我可能会错过,敬请回答。

EN

回答 2

Stack Overflow用户

发布于 2015-06-07 07:16:11

在缺乏硬件支持的情况下,可以使用半虚拟化。对来宾操作系统进行了修改,以便调用虚拟机管理器(VMM)或虚拟机管理程序,而不是直接访问某些硬件资源。

例如,不能允许x86上的来宾操作系统禁用实际CPU上的中断。相反,客户操作系统调用VMM来模拟禁用中断。

另一种选择是本机虚拟化。在本机虚拟化中,客户操作系统及其进程的指令是模拟的。仿真层允许虚拟化软件处理诸如cli这样的特权指令。因此,本机虚拟化不需要硬件支持,也不需要修改客户操作系统。

票数 3
EN

Stack Overflow用户

发布于 2015-06-13 19:08:16

如果您没有硬件虚拟化,并且不想考虑半虚拟化,则另一个选项是二进制转换。x86的问题(我假设是在谈论x86)是存在某些没有特权(参见Popek和Goldberg虚拟化需求)的耸人听闻的指令。从这个意义上说,特权意味着它将导致从用户模式到内核模式的陷阱。由于这些指令是在来宾内核(它以用户空间特权作为来宾运行)中找到的,但不会导致退出,所以它们可能是一个问题。例如,根据在用户或内核中调用它的不同,popf的行为是不同的(Intel参考手册第2卷,参见关于popf的一节)。因此,当来宾执行popf时,我们希望VM退出,但它不会。在二进制翻译中,我们基本上扫描内核二进制代码,用机器代码替换所有与敏感的非特权指令对应的机器代码,这些代码将执行正确的仿真,或者更有可能导致VM退出,这样虚拟机管理程序就可以进行干预。在这个VMware文档。中可以找到一些这样的东西,我能找到的大多数其他文档,在任何深度解释二进制翻译都在付费墙后面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30641784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档