仿真器(emulator)和模拟器(simulator)区别可以认为Emulator是Simualtor和真机之间的一层
仿真器(emulator)和模拟器(simulator)是比较容易混淆的概念,这两个概念不仅针对计算机体系结构,在很多方面都有所应用,例如航空模拟器、街机仿真器等。
模拟器(simulator)是用于分析研究目标系统本身,模拟器系统本身要跟目标系统保持一致。例如飞行模拟器对于用户来讲其本身要跟真正的飞机一致;再比如gem5模拟器,其本身要跟CPU所有内部行为一致(包括内部运行原理都要一致)。好的模拟器本身也可以仿真其目标系统,但不是所有模拟器都有这个特性。
仿真器(emulator)的目的是作为目标系统的替代品,可以完全替代目标系统,完成其对外的功能,即仿真器系统只需要保证呈现给外部的行为跟目标系统一致(不需要保证内部运行原理一致)。例如想在电脑上玩小时候玩的街机游戏,就需要在电脑上安装一个街机仿真器(虽然很多人喜欢称其为“街机模拟器”)。使用仿真器的目的是模拟目标系统呈现出的运行环境,仿真器保证的是完成目标系统相同的行为,不在乎其内部实现原理,再例如EMU8086仿真器,可以在另一台非8086电脑上仿真8086微处理器的行为。即使再好的仿真器也不能作为模拟器用于研究目标系统内部运行原理。
针对gem5,其本身是一个CPU模拟器,但是因为其也能做到仿真器可以完成的工作(gem5运行于Atmoic模式), 尽管其运行速度相比真正CPU差很多,也可以认为其是一个类似于EMU8086的CPU仿真器。但是尽管gem5运行于乱序(Out Of Order, 简称O3)时,gem5可以被看做CPU模拟器,其内部模拟的CPU各个模块也不是完全一样,所以也可以任务,gem5是由仿真多个部件的仿真器构成的。总之,模拟器针对目标系统内部进行模拟(对目标系统软件行为的模拟),仿真器用于仿真目标系统对外的行为(对目标系统软件和硬件的方针,看起来的目标系统一样)。
Simulator和Emulator异同
相同之处
首先,我们先看两者相同之处吧。Simulator和Emulator两者都可以在灵活的软件定义网络的环境中执行软件测试。而且这种方式比在真机中测试更快速更简单。真机测试往往在软件发布以用于生产力之前。
不同之处
它们具体工作方式不同。
Simulator用于创建包含了应用程序真实生产环境中的变量和配置的模拟环境。但是Simulator不会尝试仿真生产环境中真实的硬件,因为Simulator只是创建软件环境,这种环境可以通过高级编程语言实现。
而Emulator会尝试模拟生产环境种所有的硬件功能和软件功能。通常你需要使用汇编语言来编写emulator来实现这个目的。
从某种程度来说,你可以认为Emulator是Simualtor和真机之间的一层。Simulator只是模拟了可以用软件定义或配置的功能环境,而Emulator模拟了软硬件功能。当然因为Emulator可能模拟生产环境中软硬件环境不到位,所以它们不是真机环境的替代品哦。
使用决策
何时使用Simulator
通常,Simulator最好用于软件测试场景中,这时你只需要关注程序与外部程序或环境交互时的执行结果是否和预期一致即可。例如,你想测试一款应用程序是否可以向其它应用程序发送数据,此时,Simulator足够了,因为底层硬件配置不太可能会影响数据传送。
何时使用Emulator
在你需要测试软件如何与底层硬件交互或者需要软硬件结合环境时,Emulator将会更合适。例如,你想知道固件(firmware)更新,对你的应用程序时候会造成影响,你就可以使用Emulator了。再者,你想知道在不同的CPU种类或者不同内存分配下,你的应用程序的表现如何,都可以使用Emulator。
结论
总结就是:Simulator提供了快速简单的方式设置软件环境以测试应用程序,而不关心硬件。Emulator既模拟软件,也模拟硬件。两者都很有用,但是都不足以代替真机环境。
Simulator | Emulator |
---|---|
一定程度上模拟其它系统 | 精确模仿其它系统 |
不一定遵循所有的被模拟系统的规则 | 严格遵循被模拟系统的参数和规则 |
应用程序和事件的模型 | 就是其它系统的拷贝 |
参考
[1] Simulators vs. Emulators: What’s the Difference, Anyway?
[2] Difference between Simulator and Emulator
[3] Difference Between Emulator and Simulator
仿真器(emulator)和模拟器(simulator)区别可以认为Emulator是Simualtor和真机之间的一层相关推荐
- 【为什么要用真机】——谈模拟器与真机的差别
今天语音对话应用调试时要用两台手机,无奈模拟器打开不了app.网上查阅资料,发现我的问题应该是模拟器无法获取语音权限导致的.感觉这篇文章比较全面,分享给大家参考,同时也建议大家尽量用真机测试.转载地址 ...
- 制作模拟器和真机通用静态库
通常在项目中使用静态库的时候都会有两个版本,一个用于模拟器,一个用于真机,因为Mac和iPhone的CPU不同,才造成了这种情况. 为了模拟器与真机之间切换调试的方便,制作通用版本非常有必要. 现在有 ...
- [ Android ] Eclipse调试Android程序的问题——模拟器与真机同时存在时出现的
问题背景:Eclipse配置好安卓开发环境后,直接用的真机调试,没有问题.之后下载了模拟器,调试程序也没有问题.当再次连接真机调试时,出现报错,不能在手机上运行.这种情况可能属于偶然. console ...
- Android开发,关于模拟器通知显示正常,真机测试真机通知无效问题
最近,小白弄一个通知,模拟器上通知显示还是正常的,但真机测试就出现通知不显示的问题,并且也不报错,嘿,可给它牛坏了. 百度半天也没解决问题,然后就在真机的应用权限设置里发现,原来通知权限是默认关闭的, ...
- Appium自动化测试<一>真机/模拟器一并给你讲得明明白白
在深层次:Android是java开发的 本篇讲的是环境安装 一.Appium概述 Appium 是一个开源工具,用于自动化ios 手机.Android 手机和 Windows 桌面 平台上的原生.移 ...
- RT-Thread 模拟器 simulator 搭建 LVGL 的开发调试环境
前言 RT-Thread 当前的版本:4.1.0,通过简单的配置就可以支持最新的LVGL 图形库版本,LVGL图形库以软件包的方式加入工程 LVGL 可以认为是当前开源.免费的优秀GUI的图形库,对内 ...
- android 区分 真机模拟器_Android模拟器和真机总结的九点区别 Android程序如何在手机上运行...
Android是一个包括操作系统.中间件.用户界面和关键应用软件的移动设备软件堆.换言之,Android是基于Java并运行在Linux内核上的轻量级操作系统,其功能全面,包括一系列Google公司在 ...
- RT-Thread 模拟器 simulator LVGL控件:switch 开关按钮控件
前言 switch button : 开关按钮控件,用的也比较多,这里熟悉下相关的操作 switch 有两个状态:开与关 环境搭建 RT-Thread 4.1.0 或最新版本 BSP 模拟器 simu ...
- app测试模拟器和真机区别
转载1: 平时测试过程中,经常有组内同学们问,使用模拟器测试完之后,是否可以代替真机的兼容测试了. 先来看看模拟器和真机的直观区别: 多点触摸(比如两个手指放大文本字体大小) 网络通话(没有真实的呼入 ...
最新文章
- NLP任务中的文本预处理步骤、工具和示例
- 获取屏幕的宽和高-Display中getHeight()和getWidth() 官方废弃
- 第三课——MFC编程
- HTTP和HTTPS的区别是什么?
- 增加javascript的 trim函数
- mysql主从配置对解决并发有用_MySQL主从配置,读写分离
- 未来三年分布式光伏必然爆发
- 计算机网络工程税率多少,弱电工程增值税6%、9%、13%税率怎样选择?
- D3.js v4版本 按住shift键框选节点demo
- C语言递归方法求解背包问题
- 多媒体计算机技术的核心技术是,计算机多媒体的核心技术与发展
- comsol奶酪模型 comsol多孔材料
- OpenCV实现监控移动侦测
- Glassfish的安装与使用
- 2021年N1叉车司机考试APP及N1叉车司机免费试题
- Kali BeEF MSF的使用
- 蔡司数码视疲劳测试软件_[专题]重度近视别担心!!蔡司数码型镜片真实测评,带给我不一样的体验...
- 利用Python进行数据分析 学习笔记
- 【CAD】Java使用第三方类库解析CAD文件,详细接口说明
- Win7系统安装哪个版本的Chrome浏览器