在我的OS课程中,我记得老师说的是
Type 1虚拟机管理程序直接在硬件上运行; 2型管理程序 在另一个操作系统上运行,例如Linux
这表明2型虚拟机管理程序下的虚拟机性能较低。
我正在做一些简单的基准测试,例如迭代for循环或使用VirtualBox(这是一个Type 2虚拟机管理程序)将字符写入文本文件,但发现性能影响最小。
稍微调查一下,看来在我的计算机上VirtualBox可以使用VT-x进行硬件虚拟化,即使它在我的Windows操作系统下运行。
所以出现的问题是,2型虚拟机管理程序现在真的遭受了性能损失,特别是考虑到它们可以实现硬件虚拟化吗?
如果答案是否定的,那么为什么类型1和类型2管理程序之间的区别仍然存在?
答案 0 :(得分:7)
虚拟化非常复杂。如今,硬件虚拟化(来自英特尔的 VT-x 和来自AMD的 AMD-V )极大地提高了整体虚拟化性能,但它只对虚拟化的某些部分有所帮助。大多数代码都直接在硬件上执行。但仍有一些情况需要在软件中模拟代码。有许多技巧和技术可以改善硬件限制的性能和安全性以及变通方法,因为x86平台从未被设计为虚拟化。
我建议您查看Virtualbox的手册,其中描述了很多技术细节,特别是Hardware vs. software virtualization及后续章节。如果您对这些事情感兴趣,可以阅读很多有趣的内容。
同样,虚拟化性能的基准测试并不容易,因为它很大程度上取决于基准测试的功能。如果它完全只在 ring 3 (用户空间)中运行,它可能会在没有管理程序拦截的情况下直接在硬件上运行。这意味着它将具有与在真实硬件上运行时类似的性能。另一方面,如果它几乎一直在 ring 0 (最有特权的内核空间)中运行,这意味着它将进行大量系统调用,管理程序将具有许多工作和虚拟化可能会显着减慢。实际上,guest虚拟机系统调用不会在 ring 0 中运行,因为管理程序将失去对系统的整体控制权。相反,管理程序使用 ring 1 ,这根本不是普通的。有关详细信息,请参阅Protection rings on Wikipedia。