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


98

Можно создать дубликат:
Simulator or Emulator? What is the difference?

В простых понятных терминах, в чем разница между этими двумя терминами?

[Я уже смотрел на this, this и this]

295

(используя в качестве примера первый ссылка)

Вы хотите, чтобы дублировать поведение старого HP калькулятора, есть два варианта:

  1. Вы написать новый программа, которая рисует дисплей и клавиши калькулятора, а когда пользователь нажимает на клавиши, ваши программы выполняют то, что сделал старый калькулятор.Это Simulator

  2. Вы получаете дамп прошивки калькулятора, а затем написать программу, которая загружает прошивку и интерпретирует его таким же образом микропроцессор в калькуляторе сделал. Это Emulator

Simulator пытается дублировать поведение устройства.
Эмулятор пытается дублировать внутренние работы устройства.

+20

Я никогда не видел более простого объяснения ... Большое спасибо :) 27 фев. 102010-02-27 02:09:12

+1

Да - это отличный способ обобщить это. Благодаря! 27 май. 102010-05-27 15:52:54

+9

Более конкретно, эмулятор пытается дублировать все поведение устройства с внешней точки зрения. Для этого может потребоваться дублирование внутренней работы устройства или нет. Моделирование пытается дублировать определенное подмножество поведения устройства. 13 май. 112011-05-13 20:18:47

+6

Я не согласен с приведенным здесь ответом.Оба примера - симуляция, только на разных уровнях. Если вы отключите процессор от калькулятора, подключите пробник, запустите калькулятор и получите те же ответы, что зонд является эмулятором. Более качественные ответы даны ниже, Джей Элстон, помощник и полубессознательный. 26 сен. 112011-09-26 17:53:00

+28

Забавный, этот ответ говорит прямо противоположное тому, что было задано [дублируемому вопросу] (http://stackoverflow.com/q/1584617/485561). 01 мар. 122012-03-01 12:42:30

  0

Отличный ответ, но IMO, было бы правильно изменить имя 'device' на' system', потому что в дополнение к устройствам могут быть реализованы такие вещи, как процесс, некоторое поведение и т. Д. 27 апр. 122012-04-27 11:13:09

+2

По-видимому, существует различие во мнениях относительно того, что означают слова в контексте технологии, о чем свидетельствует диаметрально противоположный, но популярный [ответ] (http://stackoverflow.com/a/1584701/1257965) дублированный вопрос , Я соглашусь с ответом Карлоса, потому что, на мой взгляд, есть разница в том, на каком уровне что-то подражает, и я думаю, что в его ответе правильное различие сделано правильно. См. Также Питер Ханс ван ден Муйзенберг на этой странице (http://ed-thelen.org/comp-hist/emulation.html) о боли в желудке и употреблении незрелых яблок. 14 ноя. 122012-11-14 12:23:45

  0

Означает ли это, что имитатор полета фактически является эмулятором полета? 02 сен. 152015-09-02 11:54:48

  0

Так вот в чем разница между Xcode Simulator и Android Studio Emulator :) 17 сен. 162016-09-17 09:58:36

  0

Woah! Этот ответ противоречит принятому ответу на его [возможный дубликат] (http://stackoverflow.com/questions/1584617/simulator-or-emulator-what-is-the-difference). Дублированный ответ не «эмулирует» * (читай дубликат) * оригинальный ответ! : P 23 ноя. 162016-11-23 17:26:50

  0

Это противоречит моему пониманию двух разных терминов. В качестве примера я считаю, что цифровое пианино * эмулирует * аналоговое фортепиано (в реальном времени, такое же внешнее наблюдаемое поведение), в то время как вы можете * имитировать * столкновение двух галактик в программном обеспечении (а не в реальном времени, и вы только хотите проверить некоторые внутренние физика столкновения, а не то, как будет вести себя полная система - например, точно, как она будет выглядеть на небе). 02 дек. 172017-12-02 12:45:36


1

«эмулятор» является термин для программного обеспечения на основе аппаратно-симуляторе, но в целом два являются синонимами.

+1

Я ничего не знаю, но я бы предположил, что иногда симулятор не может фактически имитировать фактическое аппаратное обеспечение низкого уровня, а вместо этого представляет собой набор программного обеспечения, которое имитирует платформу apis на высоком уровне. 01 фев. 102010-02-01 04:28:19

+1

Существует различие между ними. «Эмуляция» подразумевает более точное дублирование поведения, чем «симуляция». 27 дек. 112011-12-27 18:33:52


6

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

Позвольте привести пример - предположим, что вы хотите провести некоторое тестирование системы, чтобы увидеть, как добавление нового датчика (например, термометра) в систему повлияет на систему. Вы знаете, что термометр отправляет сообщение 8 раз в секунду, содержащее его измерение.

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

Эмуляция - предположим, что у вас очень дорогой термометр, который измеряет до 0,001 C, и вы хотите посмотреть, можете ли вы пройти с более дешевым термометром, который измеряет только до ближайшего 0,5 C. Вы можете эмулировать более дешевый термометр, используя дорогой термометр, округляя показания до ближайшего 0,5 C и проводимые испытания, которые полагаются на значения температуры.

  0

Проверьте ссылки, он говорит об аппаратной эмуляции 01 фев. 102010-02-01 04:57:25


3

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

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

+1

Это тоже мое понимание. Я даже придумал фразу для этого различия: «Симулятор - эмулятор в миссии». 01 фев. 102010-02-01 08:33:26


1

Исходя из мира разработки аппаратного обеспечения. , ,

Имитационные испытания. 2 + 2 = 4 и т. Д.

Эмуляция проверяет функциональность в конкретной среде (64-разрядные, 16-битные, пальцы и пальцы).

Вот пример еды:

У вас есть два куска хлеба, один нож, арахисовое масло и желе и будет давать их в воспитатель. Вы пишете инструкции о том, как сделать сэндвич.

При моделировании, вы бы разыгрываете процесс, вид, что вы открыли банки, делают вид распространения арахисового масла и т.д.

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

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

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


12

Это сложный вопрос, который необходимо ответить окончательно, потому что термины и часто используются неправильно или сбиты с толку.

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

Симулятор представляет собой частичную реализацию устройства/платформы, этого достаточно для своих целей. Например, iPhone Simulator запускает «приложение для iPhone», которое было специально скомпилировано для целевого x86 и API Cocoa, а не для процессора ARM реального устройства и API Cocoa Touch. Однако двоичный файл, который мы запускаем в симуляторе, не будет работать на реальном устройстве.


0

Пожалуйста, простите меня, если я ошибаюсь. И я должен заранее признать, что я не проводил исследований по этим двум терминам. В любом случае ...

Эмуляция должна имитировать что-то с подробными известными результатами, какими бы ни были внутренние поведения. Мы только пытаемся добиться успеха и не заботимся о том, что происходит внутри.

Моделирование, с другой стороны, должно имитировать что-то с некоторыми известными поведением, чтобы изучить то, что еще не известно.

мои 2cents


0

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


10

Как правило, я думаю об этом более крупном вопросе в трех частях: симуляция, стимуляция, эмуляция и моделирование.

Моделирование - использование моделирования для создания контролируемого, представительного стенда для сложной системы. Моделирование по определению всегда является неполным.

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

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

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

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

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

+1

Это четыре части 19 фев. 152015-02-19 04:50:19


0

Я был в замешательстве между этими двумя процессами.Я нашел простой объяснений по поводу разницы между эмуляторы и симуляторы

  1. Simulator:
    Предположим, что вы написали программу для сборки в файле и соответствующий EXE файл готов. Симулятор представляет собой программное обеспечение ПК, которое считывает инструкции из exe и «minmics» - работу процессора.

  2. Эмулятор:
    Эмулятор - это (программное обеспечение для ПК + процессор). Процессор можно подключить к TARGET BOARD, если вы хотите протестировать разработанное программное обеспечение в режиме реального времени , чтобы проверить ошибки времени выполнения. Когда он не используется, его можно отключить. Процессор будет иметь параллельный или JTAG-интерфейс с ПК для загрузки файла exe для выполнения.

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

Источник: http://www.dsprelated.com/groups/c6x/show/148.php


3

на основе программного обеспечения и системы инженерного опыта, я бы суммировать разницу следующим образом:

Моделирование: для меня это всегда в программном обеспечении - каждый аспект реальной системы только МОДЕЛИРОВАН некоторым кодом и/или математикой. Моделирование пытается точно воспроизвести поведение (или предсказать его) реальной системы, но только приближает его.

Эмуляция: В отличие от симуляции, это НЕ ПРИБЛИЖЕТ поведение реальной системы, оно КОПИРОВАЕТ поведение реальной системы. Эмулятор может включать аппаратное обеспечение. Но он также может быть полностью в программном обеспечении. Например. вы получаете эти ПО ЭМУЛЯТОРЫ для старых игровых консолей, таких как Sega Genesis. Это эмулятор, потому что он КОПИРУЕТ реальную функциональность генезиса настолько, что вы можете запустить исходный код Genesis в эмуляторе. Симулятор генезиса не сможет запускать исходный код, он просто ПРИБЛИЖАЕТ его поведение, производя аналогичные результаты, в зависимости от того, насколько хороши модели исходной системы.

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