Яка різниця між імітацією та емуляцією


97

Я часто бачу моделювання та емуляцію в інформатиці. Ці два терміни здаються синонімами. Чи є різниця між імітацією та емуляцією ?

Відповіді:


108

Так, поняття різні.


Моделювання

A simulation- це система, яка поводиться схоже на щось інше, але реалізується абсолютно по-іншому. Він забезпечує основну поведінку системи, але може не обов'язково дотримуватися всіх правил модельованої системи. Саме там можна дати вам уявлення про те, як щось працює.

Приклад

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


Емуляція

emulationЦе система , яка поводиться так само , як що - то інше, і дотримується всіх правил системи наслідують. Це фактично повна реплікація іншої системи, аж до того, що вона є бінарною сумісною з входами та виходами емульованої системи, але працює в іншому середовищі до вихідної емульованої системи. Правила виправлені і не можуть бути змінені, або система виходить з ладу.

Приклад

Система MAME побудована навколо цього самого приміщення. Усі старі аркадні системи, які були давно забуті, які майже повністю реалізовані в апаратному забезпеченні або в програмному забезпеченні їх апаратних систем, можуть бути імітовані аж до оригінальних помилок і збоїв, які відбудуться, коли ви досягнете максимально можливого балу.


18
"поводитися екстремально, як ..." може не бути необхідним. Важливим є те, що воно «відтворює таку саму точну зовнішню поведінку» стосовно того, що використовує.
Еміліо Гаравалья

Зауважте, що це залежить від того, що моделюється / імітується. Наприклад, те, що імітує комп'ютер, сумісний з ПК, може бути набагато менш точним і набагато менш реалістичним, ніж те, що імітує цифрову схему комп'ютера, сумісного з ПК. У цьому випадку тренажер може поводитись «точно так само», як справжній ПК, поки емулятор цього не робить (оскільки симулятор імітує щось на набагато нижчому рівні).
Брендан

16

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

Наприклад, моделювання трафіку на ранніх маршрутах залишає імена пасажирів і, можливо, навіть їх ідентичності (використовуючи лічильну змінну, а не фактичний набір Commuterоб'єктів), але вона не може нехтувати їх швидкістю прибуття.


Емуляція - це запуск програмного забезпечення X, створеного для платформи A на платформі B, без зміни самого програмного забезпечення. Для цього потрібна побудова моделі A, яка працює на B, і, очевидно, вона повинна моделювати все про A, що включає виконання коду. (Теоретично ви можете опустити підтримку опкодів, за якими ви знаєте, що це програмне забезпечення ніколи не використовуватиметься, але це рідко - робити емулятор - це важка робота, і набагато доцільніше виконати ретельну роботу і мати щось багаторазове використання, ніж хитрощі що працює лише для С.)


7

І те й інше означає, що робиш щось інше.

Різниця полягає в тому, що "Моделювання" відбувається на свідомому рівні (стосовно користувача) і доопрацьовується, як правило, для передбачення результату реальності, не торкаючись самої реальності.

"Емуляція" відбувається на несвідомому рівні і має на меті замінити базовий компонент іншим, іншим, який - стосовно користувача - працює як старий.

Іншими словами, моделювання відбувається в "паралельному світі", а емуляція відбувається у "заміненому світі".


3
Як це відповідає на питання ОП щодо інформатики? У них немає нічого свідомого чи несвідомого. Моделювання справжнє, як і емуляція. Однак їх цілі концептуально дуже різні.
S.Robins

@ S.Robins: свідоме / несвідоме! = Реальне / нереальне. свідоме = щось, що ви прямо вирішили, несвідоме щось, чого ви не вирішили прямо. Додаток, який працює в "емульованій" системі, не знає про цю емуляцію. Додаток, який працює в "змодельованій" системі, повинен знати про це, оскільки не обов'язково матиме однакову поведінку.
Еміліо Гаравалья

1
Це не має нічого спільного з тим, які програми запущені де, і нічого спільного з прийняттям свідомих чи несвідомих рішень. Різниця принципово полягає у тому, чи моделюється система в цілому, чи повністю реплікується.
S.Robins

@ S.Robins: Я згоден з концепцією ви маєте в виду, але є що - то тонке , що не ловить , а саме «емулятор» , як правило , задумали запустити що - то на вершині, замінивши що - то під сферу застосування. "Симулятор", як правило, замислюється для запуску для себе замість реального застосування. Вони не на одному рівні абстракції.
Еміліо Гаравалья

6

Технічно вони обидва роблять те саме: роблять щось у середовищі, яке діє так, ніби це справжня річ.

У концептуальному відношенні є важлива різниця.

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

Цільове моделювання зазвичай має на меті тестування або передбачення певного реального процесу в безпечному середовищі; оскільки симуляція відключена від реального світу, нічого насправді поганого не може статися (симулятор розбитого літака ніколи не вбиває реальних людей).


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

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


3
"technically", вони зовсім інші. Концептуальна різниця, яку ви описуєте, є фундаментальною для цієї різниці.
S.Robins

@ S.Robins: "технічно" я маю на увазі те, що технічні реалізації часто подібні або еквівалентні; різниця полягає головним чином у тому, для чого ви їх використовуєте.
tdammers

Це не має нічого спільного з випадками використання. Саме принципова різниця цілей визначає дві дуже окремі концепції. Емуляція прагне замінити складну систему функціональності саме так, щоб вона не відрізнялася від оригіналу, тоді як моделювання - це велике спрощення системи та представляє функціональність у дуже загальному сенсі за допомогою моделі. Таким чином, технічні реалізації обов'язково сильно відрізняються.
S.Robins

@ S.Robins - я не згоден. Незалежно від того, чи імітуєте ви чи імітуєте даний мікропроцесор, це не має великого значення для впровадження, але те, що ви робите з ним, робить.
tdammers

1
@tdammers: Зазвичай, основна мета дизайну емулятора - слугувати заміною "реального часу" замінюваної речі, в той час як основна мета дизайну тренажерів - дозволити не обов'язково в режимі реального часу аналізу, і, можливо, взаємодія з основним процесом. Деякі тренажери можуть бути швидкими, а деякі емулятори можуть надавати значні можливості аналізу та / або взаємодії з основним процесом, але інженерні пріоритети різні.
supercat

1

Хоча етимологія не є суто точною, подумайте про різницю між симпатією, "я можу уявити, що це має відчувати", і співпереживання, "я знаю, що це таке". Моделювання може включати візуальне уявлення про проблему, але це не може. Наприклад, він може просто роздрукувати стовпці цифр, що представляють, скільки людей вишикуються за щось або загальний дохід або середня швидкість. Він має деякі характеристики, що відповідають дійсності, і деякі, які не відповідають.

Емуляція, яка часто використовується в контексті однієї платформи, яка претендує на іншу платформу, набагато більш повна. Таким чином, розробники Windows Phone можуть запускати або налагоджувати свої телефонні програми на машині Windows в емуляторі, який виглядає як телефон і веде себе як один. Ви також можете запускати свої старі ігри Commodore 64 в емуляторі.

Слова не точні. Більшість тренажерів польоту, на мою думку, більше схожі на емулятори, але назва застрягла ще з часів, коли вони не були такими захоплюючими. Деякі люди резервують слово емулятор для міжплатформного випадку і відкидають його за будь-що інше. Ви, мабуть, ніколи не будете вважатись неправильним, якщо ви будете робити те ж саме, говорячи, але розумієте, що деякі люди можуть розміщувати межу між цими двома словами трохи по-різному, і роблять припущення, коли хтось каже "це емуляція" для дійсно точної і повне моделювання.


1
Здається, поширене неправильне уявлення про те, що емуляція та моделювання фактично однакові. Це може бути тому, що слово емуляція може означати відображення поведінки інших людей (наприклад: дитина наслідує свого батька). Це технічно неточно, якщо говорити з точки зору інформатики. Польотний тренажер - це не емуляція, тому що весь вхід / вихід керується за допомогою спеціально побудованої програми - тренажера - яка точно не повторює поведінку літака, на якому моделюється, оскільки не використовує той самий комп'ютер програми, які виконує літак. Якби це було, то це був би емулятор.
S.Robins

0

Обидва терміни дуже схожі за поняттям - імітація.

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

Емулятори, з іншого боку, більше орієнтуються на зовнішню схожість у порівнянні з цільовою системою. Вона має мінімальну стурбованість щодо того, як "імітуються" функції. Емулятори, як правило, використовуються під час роботи в абсолютно іншому середовищі (наприклад, інша Операційна система) порівняно з оригінальною системою.


1
Я б сказав, що ви змішили дві концепції. Це симуляція, яка не хвилює точну реалізацію; емуляція дуже піклується про внутрішні. Дивіться: MAME
Andres F.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.