仿真和模拟之间有什么区别?

Laz*_*zer 104 simulation emulation

可能重复:
模拟器还是模拟器?有什么不同?

用简单易懂的术语来说,这两个术语有什么区别?

[我已经看过这个,这个这个 ]

Car*_*rez 313

(以第一个链接为例)

您想要复制旧HP计算器的行为,有两种选择:

  1. 你编写的新程序可以绘制计算器的显示和按键,当用户点击按键时,你的程序会执行旧计算器的功能.这是一个模拟器

  2. 您获得了计算器固件的转储,然后编写一个加载固件的程序,并以与计算器中的微处理器相同的方式对其进行解释.这是一个模拟器

模拟器试图复制行为的设备.
所述仿真器试图复制内部工作的设备.

  • 有趣的是,这个答案与[重复问题]的答案完全相反(http://stackoverflow.com/q/1584617/485561). (33认同)
  • 我从未见过更简单的解释......非常感谢你:) (20认同)
  • 更具体地说,仿真器试图从外部视点复制设备的整个行为.它可能需要也可能不需要复制设备的内部工作来实现它.模拟尝试复制设备行为的特定子集. (9认同)
  • 我不同意这里给出的答案.两个例子都是模拟,只是在不同的层面.如果从计算器上拔下处理器,请插入探针,运行计算器,然后得到相同的答案,该探针是仿真器.Jay Elston在下面给出了更好的答案,coxy和semiuseless. (8认同)
  • 在技​​术背景下,这些词语的含义似乎存在差异,正如对于一个重复的问题所展示的截然相反但流行的[答案](http://stackoverflow.com/a/1584701/1257965)所证明的那样.我会支持卡洛斯的回答,因为在我的脑海里,有一种区别在于什么程度上被模仿,我认为在他的回答中正确地区分了.另见Peter Hans van den Muijzenberg对[本页](http://ed-thelen.org/comp-hist/emulation.html)关于胃痛和吃未成熟苹果的看法. (2认同)

Cox*_*oxy 14

这是一个难以回答的难题,因为这些术语经常被滥用或混淆.

通常,仿真器是特定设备或平台的完全重新实现.模拟器的行为与真实设备完全相同.例如,NES仿真器实现CPU,声音芯片,视频输出,控制器信号等.可以转储来自NES castridge的未修改代码,然后将得到的图像加载到我们的仿真器中并播放.

模拟器是设备/平台的部分实现,它只是为了自己的目的.例如,iPhone模拟器运行一个"iPhone应用程序",该应用程序专门针对x86和Cocoa API进行编译,而不是真实设备的ARM CPU和Cocoa Touch API.但是,我们在模拟器中运行的二进制文件无法在真实设备上运行.


Jay*_*ton 6

两者都是一个对象的模型,你有一些控制输入和观察输出的方法.使用模拟器,您希望输出完全符合您要模拟的对象所产生的内容.使用模拟器,您希望输出的某些属性与对象生成的属性类似.

让我举一个例子 - 假设你想做一些系统测试,看看如何向系统添加新的传感器(如温度计)会影响系统.你知道温度计每秒发送一次包含其测量值的信息8次.

模拟 - 如果您还没有温度计,但是您想测试此消息速率不会使系统过载,您可以通过附加一个每秒发送8次随机数的单元来模拟传感器.您可以运行任何不依赖于传感器发送的实际值的测试.

仿真 - 假设你有一个非常昂贵的温度计,测量到0.001摄氏度,你想看看你是否可以使用更便宜的温度计,只测量到最接近的0.5摄氏度.你可以使用昂贵的温度计模拟更便宜的温度计将读数四舍五入到最接近的0.5 C并运行依赖于温度值的测试.