代码之家  ›  专栏  ›  技术社区  ›  john c. j.

我们可以用管理程序伪造处理器和RAM吗?

  •  2
  • john c. j.  · 技术社区  · 6 年前

    我经常听说“管理程序不是仿真器”。如果您需要模拟计算机所拥有的其他硬件规格,则需要使用模拟器,而不是管理程序”。

    但是昨天我在YouTube上看到了这个视频- click here -它演示了如何在带有VMware Fusion的现代MacOS上安装Win 95。

    奇怪的是,在17:39的时候,你可以看到Win95虚拟机是“64MB内存的PentiumPro”。

    enter image description here

    隐马尔可夫模型!所以,Fusion以某种方式伪造了处理器和RAM,对吧?但它不是仿真器,对吧?那么,这是否意味着任何管理程序都可以伪造处理器和RAM?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Raptor    6 年前

    在发布时,Windows95只有识别奔腾Pro之前的CPU的代码。任何不低于Pentium Pro的处理器都称为“Pentium Pro”。

    主要区别在于管理程序无法模拟CPU代码。所有代码必须在原始处理器上运行。

    虚拟机监控程序确实模拟了BIOS,其中告诉操作系统可用的硬件规格,包括RAM、引导顺序和连接的外围设备。

        2
  •  1
  •   b00n12    6 年前

    当您谈论VMware Fusion时,其工作方式取决于如何实现虚拟化。根据 wikipedia VMware Fusion利用了硬件辅助的虚拟化、动态二进制转换和准虚拟化。

    hardware-assited virtualization case,@strom是正确的,来宾指令可以直接在主机CPU上执行。除了@strom answer,还可以通过捕获和模拟 CPUID 说明,正如我之前提到的。

    para-virtualization 您可以通过调用管理程序来替换关键指令,管理程序代表来宾模拟指令。所以你再一次模仿 CPUID “假”CPU类型的指令。请记住,这需要一个经过修改的、因而是准虚拟化的来宾操作系统。

    最后, dynamic binary translation 在运行时扫描来宾代码以获取关键指令,或者用陷阱将其替换为实现某种“实时准虚拟化”的管理程序,或者将来宾代码块转换为等效的主机代码块,根据原始来宾代码修改VM状态(例如,QEMU完整系统仿真器工程)。因此,您可以通过模拟 CPUID 指令。注意,在这种情况下,来宾和主机可以是相同的体系结构,但不需要这样做。

    当然,上述技术的结合也是可行的。

    至于主内存的虚拟化,系统管理程序完全控制硬件,因此您可以简单地用64MB的主内存配置一个虚拟机。由于前面讨论过的技术,虚拟机无法“看到”更多信息。

    请记住,这只是对虚拟化的一个非常简短的概述,我试图保持它的简短和信息性,所以我知道我的解释部分不太准确。如果您真的对虚拟化感兴趣,我建议您阅读 “虚拟机:系统和进程的通用平台” 或者是关于这个话题的论文 波佩克和戈德伯格 “Xen与虚拟化艺术”