В чем разница между симуляцией и эмуляцией

97

Я часто вижу симуляции и эмуляции в информатике. Эти два термина кажутся синонимами. Есть ли разница между симуляцией и эмуляцией ?

пользователь
источник

Ответы:

108

Да, понятия разные.


моделирование

A simulation- это система, которая ведет себя подобно чему-то другому, но реализована совершенно по-другому. Он обеспечивает базовое поведение системы, но может не обязательно соответствовать всем правилам моделируемой системы. Это чтобы дать вам представление о том, как что-то работает.

пример

В качестве примера рассмотрим симулятор полета. Это выглядит и кажется, что вы летите на самолете, но вы совершенно не связаны с реальностью полета на самолете, и вы можете согнуть или нарушить эти правила, как считаете нужным. Например, летайте на аэробусе А380 вверх ногами между Лондоном и Сиднеем, не ломая его.


эмуляция

An emulation- это система, которая ведет себя точно так же, как что-то еще, и придерживается всех правил эмулируемой системы. Фактически это полная репликация другой системы, вплоть до двоичной совместимости с входами и выходами эмулируемой системы, но работающая в среде, отличной от среды исходной эмулируемой системы. Правила являются фиксированными и не могут быть изменены, иначе система выйдет из строя.

пример

Система MAME построена вокруг этой самой предпосылки. Все те старые аркадные системы, о которых давно забыли, которые были реализованы почти полностью на аппаратном уровне или во встроенном программном обеспечении их аппаратных систем, можно эмулировать вплоть до исходных ошибок и сбоев, которые могут произойти, когда вы достигнете максимально возможного балла.

S.Robins
источник
18
"вести себя точно так же, как ..." может быть необязательным. Важно то, что он «воспроизводит точно такое же внешнее поведение» в отношении того, что его использует.
Эмилио Гаравалья
Обратите внимание, что это зависит от того, что моделируется / эмулируется. Например, что-то, что имитирует компьютер, совместимый с ПК, может быть гораздо менее точным и намного менее реалистичным, чем то, что имитирует цифровые схемы компьютера, совместимого с ПК. В этом случае симулятор может вести себя «точно так же», как реальный ПК, а эмулятор - нет (потому что симулятор моделирует что-то на гораздо более низком уровне).
Брендан
16

Моделирование представляет собой модель , построенная из чего - то другого , который воспроизводит некоторые из особенностей этой штуки и оставляет другие из - очевидно , вы хотите , чтобы сохранить функции , имеющие отношение к вашему запросу, и оставить из них нерелевантных.

Например, симуляция раннего утреннего трафика исключает имена и, возможно, даже их имена (используя переменную счетчика, а не фактический набор Commuterобъектов), но не может игнорировать их скорость прибытия.


Эмуляция - это запуск программного обеспечения X, созданного для платформы A на платформе B, без изменения самого программного обеспечения. Это требует построения модели A, которая работает на B, и, очевидно, она должна моделировать все, что касается A, что включает выполнение кода. (Теоретически вы могли бы опустить поддержку кодов операций, которые, как вы знаете, не будут использоваться этим конкретным программным обеспечением, но это редкость - создание эмулятора - это тяжелая работа, и гораздо полезнее выполнить тщательную работу и получить что-то повторно используемое, чем kludge это работает только для S.)

Килиан Фот
источник
7

И то, и другое означает выполнение чего-то другого.

Разница в том, что «Симуляция» происходит на сознательном уровне (по отношению к пользователю) и обычно дорабатывается, чтобы предвидеть результат реальности, не касаясь самой реальности.

«Эмуляция» происходит на бессознательном уровне и имеет целью заменить базовый компонент другим, который, по отношению к пользователю, работает как старый.

Другими словами, симуляция происходит в «параллельном мире», а эмуляция - в «замененном мире».

Эмилио Гаравалья
источник
3
Как это отвечает на вопрос ОП с точки зрения информатики? В них нет ничего ни сознательного, ни бессознательного. Симуляция реальна, как эмуляция. Их соответствующие цели, однако, концептуально очень разные.
С.Робинс
@ С.Робинс: сознательный / бессознательный! = Реальный / нереальный. сознательный = то, что вы явно решили, бессознательное что-то, что вы сами не решили явно. Приложение, работающее в «эмулируемой» системе, не знает об этой эмуляции. Приложение, работающее в «имитируемой» системе, должно знать об этом, поскольку оно не обязательно будет иметь такое же поведение.
Эмилио Гаравалья
1
Это не имеет никакого отношения к тому, где приложения работают, и не имеет ничего общего с принятием сознательных или неосознанных решений. Основное различие заключается в том, моделируется ли система в целом или полностью воспроизводится.
С.Робинс
@ S.Robins: Я согласен с концепцией вы имеете в виду, но есть что - то тонкое , что не ловит , а именно «эмулятор» , как правило , задумали запустить что - то на вершине, заменив что - то под сферу применения. «Симулятор» обычно предназначен для запуска вместо реального приложения. Они не на одном уровне абстракции.
Эмилио Гаравалья
6

Технически они оба делают одно и то же: делают что-то в среде, которая действует так, как если бы она была реальной.

Концептуально, однако, есть важное отличие.

Предполагается, что симуляция в определенной степени отделена от реального мира; результат симуляции не связан напрямую с тем, что он симулирует. Например, симулятор самолета фактически не летает, а пилот фактически не общается с реальным авиадиспетчером.

Моделирование обычно имеет цель тестирования или предсказание какой - то процесс реальной жизни в безопасной среде; поскольку симуляция отключена от реального мира, ничего страшного не случится (симулятор разбившегося самолета никогда не убивает реальных людей).


Эмуляция , напротив, имеет целью занять место реальной вещи: например, если вы эмулировать простой микроконтроллер , используя более сложный программируемый процессор, что процессор может использоваться вместо оригинального микроконтроллера; он будет физически подключен к некоторой машине, и фактически будет управлять этой машиной так же, как микроконтроллер.

Цель из эмуляции заключается в замене аппаратных или программных компонентов с функциональными эквивалентами , когда исходные модули не доступны (или стали слишком дорогими, если только поддерживать). Эмуляция также может служить цели более гибкого использования аппаратного обеспечения - один и тот же программируемый микроконтроллер может удвоить для нескольких более простых контроллеров, переключая режим эмуляции по мере необходимости.

tdammers
источник
3
"technically"они совершенно разные. Концептуальное различие, которое вы описываете, является фундаментальным для этого различия.
С.Робинс
@ S.Robins: под «технически» я подразумеваю, что технические реализации часто похожи или эквивалентны; разница в основном в том, для чего вы их используете.
tdammers
Это не имеет ничего общего с вариантами использования. Это фундаментальное различие целей, которое определяет два совершенно разных понятия. Эмуляция стремится заменить сложную систему функциональных возможностей именно таким образом, чтобы она была неотличима от оригинала, в то время как моделирование является большим упрощением системы и представляет функциональность в очень общем смысле через модель. Таким образом, технические реализации обязательно сильно различаются.
С.Робинс
@ С.Робинс - я не согласен. Имитируете ли вы или эмулируете данный микропроцессор, не имеет большого значения для реализации, но то, что вы делаете с ним, делает.
tdammers
1
@tdammers: Как правило, основная цель разработки эмулятора состоит в том, чтобы служить заменой эмулируемой вещи в режиме реального времени, в то время как главная цель разработки симулятора состоит в том, чтобы не обязательно проводить анализ в реальном времени, и, возможно, взаимодействие с основным процессом. Некоторые симуляторы могут быть быстрыми, а некоторые эмуляторы могут предоставлять существенные возможности для анализа и / или взаимодействия с базовым процессом, но инженерные приоритеты разные.
суперкат
1

Хотя этимология не совсем точна, подумайте о разнице между сочувствием, «я могу представить, как это должно ощущаться», и сочувствием, «я знаю, что это такое». Симуляция может включать визуальное представление проблемы, но это не так. Например, он может просто распечатать столбцы чисел, представляющих, сколько людей выстроено в очередь за что-то, общий доход или среднюю скорость. У него есть некоторые характеристики, которые соответствуют реальности, а некоторые - нет.

Эмуляция, которая часто используется в контексте одной платформы, претендующей на роль другой платформы, гораздо более полная. Таким образом, разработчики Windows Phone могут запускать или отлаживать свои телефонные приложения на компьютере под управлением Windows в эмуляторе, который выглядит как телефон и ведет себя так же. Вы также можете запускать свои старые игры Commodore 64 в эмуляторе.

Слова не точны. На мой взгляд, большинство симуляторов полета больше похожи на эмуляторы, но название пришло из того времени, когда они не были такими захватывающими. Некоторые люди зарезервируют слово эмулятор для кроссплатформенного случая и отвергают его для чего-либо еще. Вы, вероятно, никогда не будете думать неправильно, если будете делать то же самое, когда говорите, но понимаете, что некоторые люди могут немного по-разному определять границу между двумя словами и делают скидку, когда кто-то говорит «это подражание» для действительно точного и полное моделирование.

Кейт Грегори
источник
1
Кажется распространенным заблуждением, что эмуляция и симуляция фактически одинаковы. Это может быть потому, что слово «подражать» может означать отражение поведения других (например, ребенок подражает своему отцу). Это технически неточно, если говорить с точки зрения информатики. Симулятор полета не является эмуляцией, потому что весь ввод / вывод управляется с помощью специально созданной программы - симулятора, которая не точно воспроизводит поведение самолета, на котором он моделируется, поскольку он не реализует тот же компьютер программы, которые делает самолет. Если бы это было так, то это был бы эмулятор.
С.Робинс
0

Оба термина очень похожи по своему понятию - имитация.

Симуляторы или симуляторы используют программное обеспечение для создания реплицированной системы, которая очень похожа на целевую модель в отношении ее базовой функциональности (особенно ее основной методологии).

Эмуляторы, с другой стороны, больше внимания уделяют внешнему сходству по сравнению с целевой системой. Это имеет минимальное беспокойство о том, «как» функции имитируются. Эмуляторы, как правило, используются при работе в совершенно другой среде (например, в другой операционной системе) по сравнению с исходной системой.

Мистер Уайт
источник
1
Я бы сказал, что вы перепутали две концепции. Это симуляция, которая не заботится о точной реализации; эмуляция очень заботится о внутренних органах. Смотрите: МАМА
Андрес Ф.