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