“模拟器”和“虚拟机”的具体区别是什么?

55
我看到它们是不同的东西,但我真的分不清为什么。 有些人说:“模拟器用于游戏;虚拟机用于操作系统”。 我不同意这个答案,因为除了视频游戏控制台(AMIGA (?))之外还有其他平台的模拟器。
你能帮我吗?
3个回答

45

虚拟机利用CPU自身的虚拟化(不论其程度如何),提供了一个虚拟化接口给真实硬件使用。而模拟器则是在没有依赖CPU能够直接运行代码的情况下模拟硬件,并将一些操作重定向到控制虚拟容器的超级监视程序。

以具体的x86示例来说明:Bochs 是一个模拟器,在软件中模拟整个处理器,即使它在兼容的物理处理器上运行;QEMU 也是一个模拟器,尽管通过使用内核端 kqemu 软件包使得它在被模拟机器与物理硬件匹配时获得了一些有限的虚拟化能力,但它并不能真正地利用完整的x86自我虚拟化,因此它是一个有限的超级监视程序;KVM 是一个虚拟机超级监视程序。

可以说,超级监视程序“模拟”受保护的访问,但它并没有模拟处理器,更准确地说,它是在“调解”受保护的访问。

受保护的访问指的是诸如设置页表或读/写I/O端口等操作。对于前者,超级监视程序验证(并通常修改,以匹配超级监视程序自己的内存)页表操作,并执行受保护的指令;I/O操作被映射到模拟设备硬件而不是模拟CPU上。

而为了使事情更加复杂,Wine 实际上更像是一个超级监视程序/虚拟机(尽管它在更高的ABI级别上),而不是一个模拟器(因此被称为“Wine不是模拟器”)。


非常感谢!那么,主要的区别在于虚拟机直接运行代码,而模拟器不会(即使它正在模拟相同的处理器),是吗?(对不起,我是新手。我需要选择最佳答案,像YA一样吗?) - A.J.
基本上是的。正如我所指出的那样,这有不同的程度,但主要问题是你是否模拟整个处理器或让主机处理器完成大部分繁重的工作。 - geekosaur
2
JumpIfNotEqual术语使用正确,这是虚拟化和仿真之间的区别。虚拟机和仿真器之间的区别略有不同。 - Ben Voigt

43

虚拟机的目的是创建一个隔离的环境。

仿真器的目的是精确地复制某些硬件的行为。

两者都旨在实现对主机硬件的某种程度的独立,但虚拟机倾向于模拟足够的硬件以使客户端工作,并且着重于仿真/虚拟化的效率。最终,虚拟机可能不像任何真正存在的硬件,并且可能需要特定于VM的驱动程序,但一组客户端驱动程序将在大量虚拟环境中保持一致。

另一方面,仿真器试图精确地复制所有行为,包括被模拟的某些真实硬件的怪癖和漏洞。所需的客户端驱动程序将完全匹配被模拟的环境。

虚拟机的实现可以使用虚拟化、半虚拟化和仿真技术,或各种技术的结合。而仿真器通常不能使用虚拟化,因为那会让抽象变得有点泄漏。


7
很好的解释。前两行直接回答了问题。 - Kalpa Gunarathna
非常清晰的答案。 - Akash5288

8

戴尔解释了仿真器和虚拟机之间的区别。

来源 - https://www.delltechnologies.com/en-us/blog/emulation-or-virtualization-what-s-the-difference/

仿真或虚拟化:有什么区别?
仿真和虚拟化有很多相似之处,但它们具有明显的操作差异。如果您想在较新的架构中访问较旧的操作系统,则应选择仿真。相反,虚拟化系统独立于底层硬件。我们将试图区分这些经常混淆的术语,并描述它们对企业IT运营的意义。
它们之间有什么区别?
简而言之,仿真涉及使一个系统模仿另一个系统。例如,如果一个软件在A系统上运行而不是在B系统上运行,则我们使B系统“模拟”A系统的工作。然后软件在A系统的仿真中运行。
在同样的例子中,虚拟化将涉及将系统A分成两个服务器B和C。这两个“虚拟”服务器都是独立的软件容器,具有自己的访问软件资源 - CPU、RAM、存储和网络,并且可以独立重新启动。它们的行为与真实的硬件完全相同,应用程序或其他计算机无法分辨出区别。
每种技术都有其自己的用途、优点和缺点。
仿真
在我们的仿真示例中,软件填充硬件的位置 - 创建一个表现出类似硬件的环境。这会对处理器造成影响,通过将周期分配给仿真过程 - 这些周期本来应该用于执行计算。因此,CPU的大部分性能都用于创建此环境。
有趣的是,您可以在仿真环境中运行虚拟服务器。那么,如果仿真是如此浪费资源,为什么要考虑它?
仿真可在以下场景中有效地利用:
•运行针对其他硬件的操作系统(例如,在PC上运行Mac软件;在计算机上运行基于控制台的游戏)
•运行针对另一个操作系统的软件(在PC上运行Mac特定软件,反之亦然)
•在可比较的硬件过时后运行遗留软件
在设计多个系统的软件时,仿真也很有用。可以在单台机器上进行编码,并且可以在多个操作系统的仿真中运行应用程序,所有操作系统同时在它们自己的窗口中运行。
虚拟化
在我们的虚拟化示例中,我们可以安全地说,它以高效、功能性的方式利用计算资源 - 独立于其物理位置或布局。具备充足RAM和足够存储空间的快速机器可以分成多个服务器,每个服务器都有自己的资源池。那个通常部署为单个服务器的单台机器现在可以托管公司的Web和电子邮件服务器。以前未充分利用的计算资源现在可以充分利用。这可以帮助大幅降低成本。
虚拟化环境需要软件桥梁与硬件交互,而虚拟化则直接访问硬件。然而,尽管是总体上更快的选项,但虚拟化仅限于运行已经能够在底层硬件上运行的软件。虚拟化的最明显好处包括:
•与现有的x86 CPU架构广泛兼容
•能够对所有硬件和软件显示为物理设备

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接