我听到很多有关“管理程序不是模拟器。如果您需要模拟计算机所没有的其他硬件规格,则需要使用模拟器,而不是虚拟机管理程序”。
好吧,但是昨天我在youtube上观看了此视频-click here-显示了如何在具有VMware Fusion的现代macOS上安装Win 95。
对我来说奇怪的是,在17:39上您可以看到Win 95虚拟机是“具有64 MB RAM的奔腾Pro”。
嗯!那么,Fusion以某种方式伪造了处理器和RAM,对吗?但这不是模拟器,对吗?那么,这是否意味着任何系统管理程序都可以伪造处理器和RAM?
答案 0 :(得分:1)
在发布时,Windows 95仅具有识别Pentium Pro之前的CPUID的代码。任何不低于奔腾Pro的处理器都被称为“奔腾Pro”。
主要区别在于管理程序无法仿真CPU代码。所有代码必须在原始处理器上运行。
虚拟机管理程序会模拟BIOS,该BIOS会告诉OS可用的硬件规格。包括RAM,启动顺序和随附的外围设备。
答案 1 :(得分:1)
在谈论VMWare Fusion时,其工作方式取决于如何实现虚拟化。 wikipedia表示,VMWare Fusion利用硬件辅助的虚拟化,动态二进制翻译和半虚拟化。
在hardware-assited virtualization情况下,@ Strom是正确的,并且来宾指令可以直接在主机CPU上执行。除了@Strom答案,您还可以通过捕获和模拟 cpuid 指令来伪造CPU类型。
在para-virtualization情况下,您可以通过调用虚拟机监控程序来代替关键指令,该虚拟机监控程序代表来宾模拟该指令。因此,您再次仿真 cpuid 指令以“伪造” CPU类型。请记住,这需要经过修改的,因此是半虚拟化的来宾操作系统。
最后,dynamic binary translation在运行时扫描来宾代码中的关键指令,并通过陷阱将其替换到管理程序中,以实现某种“实时半虚拟化”,或将来宾代码块转换为等效的宿主代码块它根据原始来宾代码修改VM状态(例如QEMU完整系统仿真器的工作方式)。结果,您可以再次通过仿真 cpuid 指令来“伪造” CPU类型。请注意,在这种情况下,来宾和主机可以是相同的体系结构,但不需要这样做。
当然,结合使用上述技术也是可行的。
对于主内存的虚拟化,虚拟机管理程序完全控制硬件,因此您只需配置仅具有64MB主内存的VM。由于上面简短讨论了这些技术,因此VM无法“看到”更多的信息。
请记住,这只是对虚拟化的简要介绍,我试图使它简短而有用,所以我知道我的解释在一定程度上不太准确。如果您真的对虚拟化感兴趣,建议阅读“虚拟机:系统和流程的多功能平台” 或 Popek&Goldberg 和的主题文章Xen与虚拟化的艺术”