我听说过很多关于"Hypervisors不是仿真器“的文章,如果您需要模拟计算机之外的其他硬件规范,则需要使用模拟器,而不是虚拟机监控程序。
嗯,但昨天我在youtube上看到了这段视频-- 单击此处 --它展示了如何在现代macOS上安装Win 95和VMware融合。
对我来说奇怪的是,17:39你可以看到Win 95虚拟机是"Pentium Pro,64 MB RAM“。
嗯!融合以某种方式伪造了处理器和RAM,对吧?但它不是仿真器,对吧?那么,这是否意味着任何管理程序都可以伪造处理器和RAM?
发布于 2019-01-21 01:42:40
在其发布时,Windows 95只有识别CPUID的代码,直到Pentium Pro为止。任何不低于奔腾Pro的处理器都被称为奔腾Pro。
主要的区别是Hypervisor不能模拟CPU代码。所有代码必须在原始处理器上运行。
系统管理程序确实模拟了BIOS,BIOS告诉操作系统可用的硬件规格;包括RAM、启动顺序和附加的外围设备。
发布于 2019-02-06 10:29:00
当您谈到VMWare融合时,这取决于虚拟化是如何实现的。根据维基百科的说法,VMWare融合采用硬件辅助虚拟化、动态二进制转换和半虚拟化.
在硬件辅助虚拟化的情况下,@Strom是正确的,客户指令可以直接在主机CPU上执行。除了@Strom答案之外,您还可以通过捕获和模拟cpuid指令来伪造CPU类型。
在半虚拟化情况下,您可以用对虚拟机管理程序的调用替换关键指令,后者代表来宾模拟指令。因此,您再次模拟cpuid指令,以“伪造”CPU类型。请记住,这需要修改,因此是准虚拟化的,来宾操作系统。
最后,动态二进制翻译在运行时扫描来宾代码以获取关键指令,或者将它们替换为虚拟机管理程序中的陷阱,从而实现某种“实时半虚拟化”,或者将来宾代码块转换为根据原始来宾代码修改VM状态的等效主机代码块(例如,QEMU完整的系统模拟器就是这样工作的)。因此,您也可以通过模拟cpuid指令来“伪造”CPU类型。请注意,在这种情况下,来宾和主机可以是相同的体系结构,但不需要这样做。
当然,上述技术的结合也是可行的。
至于主内存的虚拟化,虚拟机管理程序完全控制硬件,所以您只需使用64 As的主内存就可以配置VM。由于上面讨论的技术,VM无法“看到”更多的内容。
请记住,这只是一个非常简短的虚拟化概述,我试图保持它的简短和信息,所以我知道我的解释部分不太准确。如果您真的对虚拟化感兴趣,我建议您阅读“虚拟机:用于系统和进程的通用平台”或Popek & Goldberg和"Xen和virtualization艺术“中关于这个主题的论文。
https://stackoverflow.com/questions/54282535
复制相似问题