Возможный дубликат:
Симулятор или эмулятор? В чем разница?
В простых понятных терминах, в чем разница между этими двумя членами?
Возможный дубликат:
Симулятор или эмулятор? В чем разница?
В простых понятных терминах, в чем разница между этими двумя членами?
(используя в качестве примера вашу первую ссылку)
Вы хотите дублировать поведение старого калькулятора HP, есть два варианта:
Вы пишете новую программу, которая рисует дисплей калькулятора и ключи, а когда пользователь нажимает на клавиши, ваши программы выполняют то, что сделал старый калькулятор. Это симулятор
Вы получаете дамп прошивки калькулятора, а затем записываете программу, которая загружает прошивку и интерпретирует ее так же, как и микропроцессор в калькуляторе. Это эмулятор
Симулятор пытается дублировать поведение устройства.
Эмулятор пытается дублировать внутреннюю работу устройства.
Это трудный вопрос, чтобы ответить окончательно, потому что термины и часто злоупотребляли или путали.
Часто эмулятор представляет собой полную повторную реализацию определенного устройства или платформы. Эмулятор действует точно так же, как и реальное устройство. Например, эмулятор NES реализует ЦП, звуковую чип, видеовыход, сигналы контроллера и т.д. Немодифицированный код из каскада NES можно сбросить, а затем получившееся изображение можно загрузить в наш эмулятор и воспроизвести.
Симулятор - это частичная реализация устройства/платформы, и это достаточно для его собственных целей. Например, iPhone Simulator запускает "приложение для iPhone", которое было специально скомпилировано для целевого x86 и API Cocoa, а не для реального ARM процессора и Cocoa Touch API. Однако двоичный файл, который мы запускаем в симуляторе, не будет работать на реальном устройстве.
В общем, я думаю об этом более крупном вопросе в трех частях: симуляция, стимуляция, эмуляция и моделирование.
Моделирование - это использование моделирования для создания контролируемого, представительного стенда для сложной системы. Моделирование по определению всегда является неполным.
Стимуляция - использование искусственных экологических входов для четко определенного интерфейса для управления, изучения и тестирования поведения реального мира.
Эмуляция - это замена реального устройства с моделью на хорошо определенном интерфейсе с целью обеспечения контролируемых ответов от эмулируемого устройства реального мира. Эмуляция "завершена", если присутствуют все интерфейсы, и полученное наблюдаемое поведение соответствует действию реального устройства.
Моделирование - это использование математических методов, специализированного оборудования и технических решений для создания представительного стенда для реальной среды, устройства, системы или поведения в реальном мире.
В "простых терминах" это означает, что эмулятор - это нечто, что через четко определенный интерфейс неотличим от реального эквивалента (за исключением скорости). Эмуляции могут быть полными или неполными.
В "простых терминах" симуляция - это любая система, которую можно контролировать и исследовать для целого ряда поведений, которые аналогичны или аналогичны реальной системе. Моделирование никогда, по определению, не завершено.
Оба являются моделями объекта, у которых есть некоторые средства управления входами и наблюдениями. С эмулятором вы хотите, чтобы результат был именно тем, что создавал бы объект, который вы эмулируете. С помощью симулятора вы хотите, чтобы определенные свойства вашего вывода были похожи на то, что создавал объект.
Позвольте мне привести пример - предположим, что вы хотите провести некоторое тестирование системы, чтобы увидеть, как добавление нового датчика (например, термометра) в систему повлияет на систему. Вы знаете, что термометр отправляет сообщение 8 раз в секунду, содержащее его измерение.
Моделирование - если у вас еще нет термометра, но вы хотите проверить, что этот уровень сообщений не перегрузит вашу систему, вы можете имитировать датчик, подключив блок, который отправляет случайное число 8 раз в секунду. Вы можете выполнить любой тест, который не зависит от фактического значения, которое посылает датчик.
Эмуляция - предположим, что у вас очень дорогой термометр, который измеряет до 0,001 C, и вы хотите посмотреть, можете ли вы пройти с более дешевым термометром, который измеряет только до ближайшего 0,5 C. Вы можете эмулировать более дешевый термометр, используя дорогой термометр, округляя показания до ближайшего 0,5 C и проводимые испытания, которые полагаются на значения температуры.
Я не знаю, является ли это общим мнением, но я всегда отличал их тем, для чего они используются. Эмулятор используется, если вы действительно хотите использовать эмулируемый компьютер для его вывода. С другой стороны, симулятор предназначен, когда вы хотите изучить смоделированную машину или проверить ее поведение.
Например, если вы хотите записать некоторую логику конечного автомата в своем приложении (которая работает на CPU общего назначения), вы пишете небольшой эмулятор конечного автомата. Если вы хотите изучить эффективность или жизнеспособность конечного автомата для конкретной проблемы, вы пишете симулятор.
Основываясь на опыте работы с программным обеспечением и системой, я бы обобщил разницу следующим образом:
Моделирование: для меня это всегда в программном обеспечении - каждый аспект реальной системы только МОДЕЛИРОВАН некоторым кодом и/или математикой. Моделирование пытается точно воспроизвести поведение (или предсказать его) реальной системы, но только приближает его.
Эмуляция. В отличие от симуляции, это НЕ ПРИБЛИЖЕТ поведение реальной системы, оно КОПИРОВАЕТ поведение реальной системы. Эмулятор может включать аппаратное обеспечение. Но он также может быть полностью в программном обеспечении. Например. вы получаете эти ПО ЭМУЛЯТОРЫ для старых игровых консолей, таких как Sega Genesis. Это эмулятор, потому что он КОПИРУЕТ реальную функциональность генезиса настолько, что вы можете запустить исходный код Genesis в эмуляторе. Симулятор генезиса не смог бы запускать исходный код, он просто ПРИБЛИЖАл бы его поведение, создавая аналогичные результаты, в зависимости от того, насколько хороши модели исходной системы.
Эмулятор системного компонента может быть включен в более крупную систему, полностью заменяя компонент, который он имитирует, - симулятор не мог, поскольку он не является достаточно точным представлением исходного поведения компонента.
"Эмулятор" - это термин для аппаратно-симулятора программного обеспечения, но в целом эти два являются синонимами.
Из мира разработки аппаратного обеспечения.,.
Имитационные тесты. 2 + 2 = 4 и т.д.
Эмуляция проверяет функциональность в конкретной среде (64-битные, 16-битные, пальцы и пальцы).
Вот пример еды:
У вас есть два куска хлеба, один нож, арахисовое масло и желе, и они будут давать их детскому саду. Вы пишете инструкции о том, как сделать сэндвич.
В симуляции вы будете действовать в этом процессе, притворяться, что открыли банки, притворяетесь, что распространяете арахисовое масло и т.д.
Если в конце инструкций у вас осталось только желе, а не арахисовое масло, тогда вам не удалось выполнить симуляцию, и вам нужно исправить свои инструкции. С другой стороны, если у вас есть полный "сэндвич", тогда инструкции должны быть действительными.
В эмуляции вы использовали бы тесные представления о фактических частях (тот же хлеб, арахисовое масло ножа и т.д.). Что произойдет, если вы дадите своему детскому саду дешевый пластиковый нож и действительно действительно толстое арахисовое масло? Нож разрывается в эмуляции, и инструкции должны быть уточнены или исправлены для решения этой проблемы. В этом случае вы можете предложить разогревать арахисовое масло в микроволновой печи.
На практике: рассмотрите 64-битную систему, в которой вы программируете, и 32-битную систему, которая фактически будет запускать код. Вы добавляете два очень больших числа и печатаете результат. В симуляции все работает (вам удалось получить код справа, чтобы добавить два номера). В эмуляции, однако, вы обнаружите, что получаете неправильный ответ. Что случилось? Эмуляция 32-разрядной системы не способна обрабатывать большие числа. Это пример правильной функциональности (т.е. Моделирования), но не надлежащей поддержки среды выполнения (эмуляция)
Пожалуйста, простите меня, если я ошибаюсь. И я должен заранее признать, что я не проводил исследований по этим двум терминам. В любом случае...
Эмуляция должна имитировать что-то с подробными известными результатами, какими бы ни были внутренние поведения. Мы только пытаемся добиться результата и не заботимся о том, что происходит внутри.
Имитация, с другой стороны, заключается в том, чтобы подражать чему-то известному поведению, чтобы изучить то, что еще не известно.
мои 2cents
Вот пример - мы недавно разработали имитационную модель для измерения времени ответа удаленной передачи еще не разработанной системы. Анализ эмуляции не дал бы нам ответ вовремя, чтобы повысить пропускную способность, поэтому симуляция была нашим подходом. Поскольку мы в основном заинтересованы в определении потребностей в пропускной способности, мы в основном относились к размеру транзакции и объему, а не к обработке системы. Симуляционная модель была посвящена отдельному программному обеспечению, предназначенному для моделирования процессов дискретных событий. Подводя итог в ответ на ваш вопрос, эмуляция - это тип моделирования. Но в этом случае симуляция не была эмуляцией, поскольку она не полностью представляла новую систему, а только размер и объем транзакций.
Я был смущен между этими двумя процессами. Я нашел это простое объяснение разницы между эмуляторами и симуляторами
Simulator:
Предположим, что вы создали программу сборки в файле и соответствующем exe
файл готов. Симулятор представляет собой программное обеспечение для ПК, которое считывает инструкции
от exe и "minmics" - работа процессора.
Эмулятор:
Эмулятор - это (программное обеспечение ПК + процессор). Процессор можно подключить к
TARGET BOARD, когда вы хотите протестировать разработанное программное обеспечение в режиме реального времени
для проверки ошибок времени выполнения. Когда он не используется, его можно отключить. Процессор
будет иметь параллельный или JTAG-интерфейс с ПК для загрузки exe
файл для выполнения.
Следовательно, в то время как симулятор работает медленно, эмулятор сможет в реальном времени проверять разработанный код. Обычно вы сначала тестируете свой разработанный код на симуляторе, а затем для проверки на эмуляторе.