Симулятор или эмулятор? В чем разница? - программирование

Симулятор или эмулятор? В чем разница?

Хотя я понимаю, что такое симуляция и эмуляция в целом, я почти всегда запутываюсь в них. Предположим, что я создаю часть программного обеспечения, которая имитирует существующее аппаратное/программное обеспечение, как это назвать? Симулятор или эмулятор?

Может ли кто-нибудь объяснить разницу с точки зрения программирования?

Бонус: Какая разница в английском между этими двумя терминами? (Извините, я не являюсь носителем языка :))

4b9b3361

Ответ 1

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

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

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

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

Flight Simulator - симулятор; SPICE - это симулятор электроники. Они как можно больше моделируют каждую деталь цели, чтобы представить, что делает цель в действительности.

EDIT: в других ответах указывается, что целью эмуляции является возможность заменить объект, который он имитирует. Это важный момент. Основное внимание в моделировании уделяется моделированию внутреннего состояния мишени - и симуляция не обязательно приводит к эмуляции. В частности, симуляция может работать намного медленнее, чем в реальном времени. SPICE, например, не может заменить реальную схему электроники (даже если предположить, что существует какое-то волшебное устройство, которое прекрасно взаимодействует с электрическими цепями для моделирования SPICE). Моделирование Моделирование не всегда приводит к эмуляции -

Ответ 2

Если бы имитатор полета мог доставить вас из А в В, то это был бы эмулятор полета.

Эмулятор может заменить оригинал для реального использования.
Виртуальный ПК эмулирует ПК.

Симулятор - это модель для изучения и анализа.

Эмулятор всегда должен работать в режиме реального времени. Для симулятора это не всегда так. Геологическое моделирование может делать 1000 лет в секунду или более.

Ответ 3

Симуляция = для анализа и изучения

Эмуляция = для использования в качестве замены

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

Симулятор имитирует активность того, что имитирует. Оно "кажется" (многие могут пойти с этим "появляется", в зависимости от контекста) и совпадает с моделируемой вещью. Например, симулятор полета "кажется" настоящим рейсом для пользователя, хотя он не переносит вас из одного места в другое.

Эмулятор, с другой стороны, на самом деле "делает" то, что делает эмулируемая вещь, и при этом он тоже "кажется, делает то же самое". Эмулятор может использовать другой набор протоколов для имитации эмулируемой вещи, но результат/результат всегда совпадает с исходным объектом. Например, EMU8086 эмулирует микропроцессор 8086 на вашем компьютере, который, очевидно, не работает на 8086 (= разные протоколы), но вывод, который он дает, дает реальный 8086.

Ответ 4

Это разница в фокусе. Эмуляторы 1 сосредоточить внимание на воссоздании поведения системы, не обращая внимания на то, как система функционирует внутренне. Симуляторы 2 сосредоточиться на моделировании компонентов системы. Вы используете эмулятор, когда вы в основном заботитесь о том, что делает система, и симулятор, когда вы заботитесь о том, как он это делает.

Что касается их общих английских значений, эмуляция является "стремлением к равному или превосхождению другого по качеству или <сильным > действиям", а симуляция - " модель, репликация, дублировать поведение, внешний вид или свойства". Не большая разница. Эмуляция происходит от æmulus, "стремления, соперничества" и связана с "имитацией" и "изображением", что предполагает сходство с поверхностным рычагом. "Моделирование" происходит от similis "like", как и слово "похоже", что, возможно, предполагает более глубокое сравнение.

Литература:

Ответ 5

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

Короче: эмулятор предназначен для копирования некоторых функций orginial и может даже заменить его в реальной среде. Симулятор не предназначен для копирования особенностей оригинала, но только для того, чтобы казаться похожим на оригинал для людей. Без особенностей оригинала симулятор не может заменить его в реальной среде.

Эмулятор - это устройство, которое имитирует что-то достаточно близко, чтобы можно было заменить на реальную вещь. Например, вы хотите, чтобы схема работала как схема ROM (постоянное запоминающее устройство), но также хочет отрегулировать контент, пока он не станет тем, что вы хотите. Вы будете использовать эмулятор ROM, черный ящик (вероятно, будет основан на процессоре) с физическими и электрическими интерфейсами, совместимыми с ПЗУ, который вы хотите подражать. Эмулятор будет подключен к устройству вместо реального ПЗУ. Материнская плата не увидит каких-либо различий при работе, но вы сможете легко изменить содержимое эмулированного ROM. В противном случае эмулятор будет действовать точно так же, как и фактическое в контексте своей материнской платы (возможно, немного медленнее из-за фактической внутренней модели), но будут дополнительные функции (например, переписывание), видимые только дизайнеру, из контекста материнской платы, Таким образом, определение эмулятора было бы: что-то, что имитирует оригинал, имеет все свои функциональные возможности, может фактически заменить его до некоторой степени в реальном мире и может иметь дополнительные функции, не видимые в обычном контексте.

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

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

На мой взгляд, модель внутри эмулятора или симулятора может быть чем угодно и не должна быть похожа на модель оригинала. Модель эмулятора ПЗУ, скорее всего, будет программным обеспечением вместо аппаратного обеспечения, MS Flight Simulator не может быть больше программного обеспечения, чем это.

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

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

Это большая разница с эмулятором, который эмулирует только оригинал, и его цель должна использоваться в среде оригинала без необходимости эмулировать его. Вернемся к контексту плоскости... что может быть плоским эмулятором? Может быть, поезд, который будет соединять два аэропорта - на самом деле два самолета - с пассажирами, с бортпроводниками на борту, с салоном автомобиля, похожим на фактическую кабину самолета, и с капитаном, говорящим "дамы и господа, наша высота составляет 10 км, а температура в пункте назначения 24 ° C. Его преимущество трудно увидеть, гул...

Как вывод, эмулятор - это настоящая вещь, предназначенная для работы, симулятор - это подделка, предназначенная для обмана пользователя.

Ответ 6

Простое объяснение.

Если вы хотите конвертировать ваш компьютер (под управлением Windows) в Mac, вы можете сделать любой из них:

(1) Вы можете просто установить тему Mac в своей Windows. Таким образом, ваш компьютер больше похож на Mac, но вы не можете запускать какие-либо программы Mac. (SIMULATION)

(или)

(2) Вы можете запрограммировать свой компьютер на работу как Mac (я не уверен, что это возможно: P). Теперь вы можете даже запустить программы Mac успешно и ожидать того же выхода, что и на Mac. (EMULATION)

В первом случае вы можете испытать Mac, но вы не можете ожидать того же выхода, что и на Mac.
Во втором случае вы можете ожидать того же выхода, что и на Mac, но, тем не менее, остается фактом, что это только ПК.

Ответ 7

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

Симулятор - эмулятор в миссии.

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

Ответ 8

Чтобы понять разницу между симулятором и эмулятором, имейте в виду, что симулятор пытается имитировать поведение реального устройства. Например, в случае iOS Simulator он имитирует реальное поведение реального устройства iPhone/iPad. Однако сам Simulator использует различные библиотеки, установленные на Mac (например, QuickTime) для выполнения его рендеринга, чтобы эффект выглядел так же, как и фактический iPhone. Кроме того, приложения, протестированные на Simulator, скомпилированы в код x86, который является байтовым кодом, понятным симулятору. Реальное устройство iPhone, наоборот, использует ARM-код.

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

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

Ответ 9

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

Ответ 10

В более или менее нормальном выражении: если ваше программное обеспечение может делать все, что может сделать имитированная система, это эмулятор. Если это только приближает результаты системы (IT или иначе), то это симулятор.

Ответ 11

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

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

Пример

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

Эмуляция

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

Пример

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

Ответ 12

Эмулятор является альтернативой реальной системе, но имитатор используется для оптимизации, понимания и оценки реальной системы.

Ответ 13

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

Эмулятор: он похож на исполняемый файл. то есть он принимает скомпилированный код и выполняет его.

Ответ 14

Дистрибуция между двумя терминами немного нечеткая. Исходя из мира, где "Эмуляторы" - это части оборудования, которые позволяют вам отлаживать встроенные системы. И помните, что продукты, которые позволили вам использовать возможности ICE (In Circuit Emulation) для отладки платформы ПК, я считаю, что использование термина "Эмуляция" является чем-то неправильным для программного обеспечения, которое МОЖЕТ ОХВАТЫВАТЬ поведение какого-либо оборудования.

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

ICE: (в эмуляции контуров) Аппарат, подключенный к плате вместо реального процессора. Он позволяет запускать систему так, как если бы процессор присутствовал. Обычно у них есть вариант процессора на них, чтобы фактически выполнить программное обеспечение с помощью логики клея, чтобы пользователь мог нарушить выполнение и один шаг под управлением аппаратного обеспечения. Некоторые из них также предоставили возможность ведения журнала. Большинство современных систем разработки процессоров заменяют эмуляцию типа ICE на JTAG Emulation, где JTAG просто разговаривает с процессором через специальный последовательный канал связи, и все выполнение выполняется процессором, установленным на плате.

Программное обеспечение EMULATOR: Эмулятор 0x86 интересуется только тем, что он может выполнять язык ассемблера 0x86, не предоставляя точный цикл по циклу поведенческой модели процессора SPECIFIC 0x86. Это пример Боча. QEMU делает это, но также позволяет "виртуализировать" использование специальных модулей ядра.

Тренажер: Texas Instruments обеспечивает CYCLE ACCURATE поведенческую модель для процессоров для разработки программного обеспечения, которая предназначена для точного МОДЕЛИРОВАНИЯ ПОКАЗАТЕЛЕЙ КОНКРЕТНЫХ процессорных ядер, которые разработчики должны использовать до наличия рабочего оборудования.

Функциональность расширения программного обеспечения EMULATOR: BLEEM не только разрешала вам запускать программное обеспечение Playstation, но также позволяла выводить изображение с более высоким разрешением, чем могла предоставить Playstation, а также использовала более продвинутые возможности графических процессоров, которые были доступны. (т.е. лучшее смешивание и сглаживание текстур.)

Ответ 15

Обе модели являются объектами, у которых есть некоторые средства управления входами и наблюдениями.

Ключевым отличием является то, что:

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

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

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

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

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

Определения терминов:

  • эмуляция - превосходит или точно соответствует
  • имитировать - имитировать внешний вид или символ

Ответ 16

На этот вопрос, вероятно, лучше всего ответить, взглянув на историческую практику.

В прошлом я видел эмуляторы игровых консолей на ПК для PlayStation и SEGA.

Симуляторы являются обычным явлением при обращении к программному обеспечению, которое пытается имитировать реальные действия, такие как вождение или полет. Gran Turismo и Microsoft Flight Simulator spring, чтобы рассматривать как классические примеры симуляторов.

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

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

Ответ 17

В компьютерной науке как симуляция, так и эмуляция производят одни и те же результаты с тех же входных данных, что и исходная система; Тем не менее, эмуляция также использует те же процессы для ее достижения и состоит из тех же материалов. Моделирование использует различные процессы из исходной системы. Также стоит отметить термин "репликация", который является промежуточным из двух - с использованием тех же процессов, но из другого материала.

Итак, если я хочу запустить свою старую игру Super Mario Bros на своем компьютере, я использую эмулятор SNES, потому что он использует тот же или похожий компьютерный код (процессы) для запуска игры и использует те же или похожие материалы ( кремниевый чип). Однако, если я хочу летать на самолете Boeing 747 на своем компьютере, я использую имитатор полета, потому что он использует совершенно разные процессы от оригинала (нет реальных крыльев, подъемников или аэродинамики!).

Вот точные определения, взятые из глоссария информатики:

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

Репликация - это модель системы, которая фиксирует функциональные соединения между входами и выходами системы и основана на тех процессах, которые являются такими же или похожими на процессы самой системы.

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

Справка: Открытый университет, Глоссарий M366 1.1, 2007

Ответ 18

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

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

Ответ 19

Определения слов описывают разницу лучше. Поиск Google дает следующие определения имитации и эмуляции:

имитировать имитировать внешний вид или характер.

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

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

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

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

Ответ 20

Виртуальный ПК пытается эмулировать компьютер с точки зрения программиста BUT, в то же время он имитирует компьютер с точки зрения инженера-электрика.

Ответ 21

Эмулятор:

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

Simulator:

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

В конце концов, это зависит от контекста, что решение лучше подходит для потребностей проекта.

Ответ 22

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

Эмулятор

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

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

имитатор

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

НО симулятор полета используется для реальных целей - он обучает пилотов, дает им навыки и знания, заменяет дорогие реальные самолеты и экономит много денег. И мы не можем просто сказать, что самолет-эмулятор, потому что у нас есть внутреннее ощущение, что это гораздо больше, поэтому мы называем его симулятором :). В самолете-симуляторе может быть эмулированный радар или транспондер, что является правдой.

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

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

Итак, наконец:

  1. Симулятор шире, чем Эмулятор
  2. Имитатор имеет тенденцию имитировать/моделировать более глобальные процессы/вещи в целом с возможностью сузить имитацию (например, имитатор конденсатора с предустановками, представляющими некоторые известные модели)
  3. Эмулятор имеет тенденцию имитировать определенные аппаратные устройства с определенной спецификацией, известными характеристиками и свойствами (например, эмулятор SNES, Intel 8087 или Roland TB-303).

Что касается происхождения слова

Все пришли с латыни и означают:

  • подражать "быть равным" (выглядит более агрессивно и прямолинейно - соперничество)
  • симулировать - это "быть похожим" (выглядит хитрее и хитрее - имитация)