“仿真器”和“虚拟机”之间的具体区别是什么? [重复]

如何解决“仿真器”和“虚拟机”之间的具体区别是什么? [重复]

|                                                                                                                   这个问题已经在这里有了答案:                                                      

解决方法

        虚拟机可以利用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来完成其他任务。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-