我看到它们是不同的东西,但我真的不知道为什么。 有人说:“模拟器用于游戏;虚拟机用于操作系统” 我不同意这个答案,因为有视频游戏控制台以外的平台的模拟器(AMIGA(?))
你能帮我吗?
答案 0 :(得分:30)
虚拟机利用CPU自我虚拟化,无论存在多大程度,都可以为真实硬件提供虚拟化接口。仿真器模拟硬件,而不依赖于CPU能够直接运行代码并将某些操作重定向到控制虚拟容器的虚拟机管理程序。
特定的x86示例可能有所帮助:Bochs是一个模拟器,即使在兼容的物理处理器上运行,也可以用软件模拟整个处理器; qemu也是一个模拟器,虽然使用内核端kqemu
软件包,当模拟机器与物理硬件匹配时,它获得了一些有限的虚拟化功能 - 但它无法真正利用完整的x86自我虚拟化,所以它是一个有限的管理程序; kvm是虚拟机管理程序。
虚拟机管理程序可以说是“模拟”受保护的访问;但它不会模拟处理器,并且说调解受保护的访问权限更为正确。
受保护的访问意味着设置页表或读/写I / O端口。对于前者,管理程序验证(并且通常修改,以匹配管理程序自己的内存)页表操作并执行受保护的指令本身; I / O操作映射到模拟设备硬件而不是模拟CPU。
只是为了使事情变得复杂,Wine也是一个虚拟机管理程序/虚拟机(虽然ABI级别更高)而不是模拟器(因此“Wine不是模拟器”)。
答案 1 :(得分:20)
虚拟机的目的是创建一个隔离的环境。
仿真器的目的是准确地再现某些硬件的行为。
两者都旨在与主机的硬件保持某种程度的独立性,但虚拟机往往会模拟足够的硬件来使客户端工作,并且强调仿真/虚拟化的效率。最终,虚拟机可能不像任何真正存在的硬件那样,并且可能需要特定于VM的驱动程序,但这组客户驱动程序将在大量虚拟环境中保持一致。
另一方面,模拟器试图精确地再现所模拟的一些真实硬件的所有行为,包括怪癖和错误。所需的访客驱动程序将与模拟的环境完全匹配。
虚拟化,半虚拟化和仿真技术或某些组合可用于实现虚拟机。仿真器通常不能使用虚拟化,因为这会使抽象有些漏洞。
答案 2 :(得分:6)
仿真或虚拟化:有什么区别?
仿真和虚拟化有许多相似之处,但它们有 明显的运营差异。如果您想要访问旧版本 在较新的架构内的操作系统,仿真将是你的 首选路线。相反,虚拟化系统的行为独立于 底层硬件。我们将把这些经常混淆的东西分开 术语,并描述它们对业务IT运营的意义。
有什么区别?
简而言之,仿真涉及让一个系统模仿另一个系统。对于 例如,如果一个软件在系统A上运行而不在系统B上运行, 我们让系统B“模拟”系统A的工作。然后软件 在系统A的仿真上运行。
在同一个例子中,虚拟化将涉及系统A和 将它分成两个服务器,B和C.这两个都是“虚拟的” 服务器是独立的软件容器,具有自己的访问权限 基于软件的资源 - CPU,RAM,存储和网络 - 和 可以独立重启。它们的行为与真实硬件完全相同 一个应用程序或另一台计算机将无法告诉 差。
这些技术中的每一种都有自己的用途,好处和 缺点。
仿真
在我们的仿真示例中,软件填写了硬件 - 创建了一个 以类似硬件的方式运行的环境。这需要付出代价 在处理器上通过为仿真过程分配周期 - 而是用于执行计算的循环。因此,一个 大部分的CPU肌肉都用于创造这种环境。
有趣的是,您可以在模拟中运行虚拟服务器 环境。那么,如果仿真是如此浪费资源,为什么呢 考虑一下?
在以下场景中可以有效地利用仿真:
•运行适用于其他硬件的操作系统(例如Mac) PC上的软件;计算机上基于控制台的游戏)
•运行适用于其他操作系统的软件(正在运行 PC上的Mac专用软件,反之亦然)
•在可比硬件过时之后运行旧版软件
在为多个系统设计软件时,仿真也很有用。 编码可以在一台机器上完成,应用程序也可以 在多个操作系统的模拟中运行,全部运行 同时在他们自己的窗户里。
虚拟化
在我们的虚拟化示例中,我们可以有把握地说它有用 以高效,功能的方式计算资源 - 独立 他们的实际位置或布局。具有充足RAM的快速机器 并且可以将足够的存储分成多个服务器,每个服务器都有一个 资源池。那台机器,通常部署为 单个服务器,然后可以托管公司的Web和电子邮件服务器。 现在可以使用先前未充分利用的计算资源 充分发挥潜力。这有助于大幅降低成本。
虽然模拟环境需要软件桥来与之交互 硬件,虚拟化直接访问硬件。然而, 尽管是整体更快的选择,但虚拟化仅限于此 运行已经能够在底层运行的软件 硬件。虚拟化最明显的好处包括:
•与现有x86 CPU架构的广泛兼容性
•能够作为所有硬件和软件的物理设备出现
•每个实例都自包含
在仿真和虚拟化之间,您的企业可以发挥最大的作用 虚拟系统功能。虽然两种服务听起来都很相似,但一切都如此 围绕您如何使用该软件。如果你想要这个软件 为了摆脱困境,虚拟化允许访客代码运行 直接在CPU上。相反,模拟器将运行访客代码 他们自己,为其他任务节省了CPU。