没有硬件支持如何实现机器虚拟化

问题描述 投票:0回答:2
这是参考机器虚拟化。 我正在经历虚拟化并了解到,通过硬件辅助虚拟化技术,特权指令可以通过陷阱故障方法进行识别,并即时替换为等效的用户级指令。但在没有硬件支持的情况下,虚拟化是如何实现的呢?在 Intel VTi 或 AMD-V 之前,特权指令是如何被软件本身捕获的?到处都使用“二进制翻译”术语,就用用户指令替换特权指令而言,这很好,但是虚拟化工具(虚拟机管理程序/vmm)如何识别来宾操作系统运行的特权指令


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

概述:

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

英特尔文档:

https://software.intel.com/sites/default/files/m/d/4/1/d/8/An_Introduction_to_Virtualization.pdf

简介:

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

x86 虚拟化

http://en.wikipedia.org/wiki/X86_virtualization

hw sf 虚拟化比较:

http://www.vmware.com/pdf/asplos235_adams.pdf

具体细节:

http://www.anandtech.com/show/2480

半虚拟化:

http://en.wikipedia.org/wiki/Paravirtualization

如果有人有任何论文/来源可以回答上面提出的问题,我可能错过了,请回复。

x86 operating-system virtual-machine virtualization itanium
2个回答
3
投票
在没有硬件支持的情况下,可以使用

半虚拟化。 来宾操作系统经过修改,不再直接访问某些硬件资源,而是调用虚拟机管理器 (VMM) 或虚拟机管理程序。

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

另一种选择是

本机虚拟化。 在本机虚拟化中,来宾操作系统及其进程的指令是“模拟”的。 仿真层允许虚拟化软件处理像 cli 这样的特权指令。 因此,本机虚拟化既不需要硬件支持,也不需要修改来宾操作系统。 如果您没有硬件虚拟化并且不想考虑半虚拟化,则另一个选择是二进制转换。 x86 的问题(我假设我们正在谈论 x86)是某些敏感指令没有特权(

请参阅 Popek 和 Goldberg 虚拟化要求

1
投票

例如,popf 的行为有所不同,具体取决于它是在用户还是内核中调用(英特尔参考手册第 2 卷,请参阅有关 popf 的部分)。 因此,当来宾执行 popf 时,我们希望虚拟机退出,但它不会。 在二进制翻译中,我们基本上扫描内核二进制文件,并将与敏感非特权指令相对应的所有机器代码替换为将执行正确模拟或更可能导致虚拟机退出的机器代码,以便管理程序可以进行干预。

可以在

这个 VMware 文档中找到其中的一小部分。

我能找到的大多数其他任何深度解释二进制翻译的文档都需要付费。

© www.soinside.com 2019 - 2024. All rights reserved.