598 Stimmen

Simulator oder Emulator? Was ist der Unterschied?

Obwohl ich im Allgemeinen verstehe, was Simulation und Emulation bedeuten, werde ich fast immer verwirrt darüber. Nehmen wir an, ich erstelle ein Stück Software, das vorhandene Hardware/Software imitiert, wie sollte ich es nennen? Ein Simulator oder ein Emulator?

Kann mir jemand den Unterschied in Bezug auf die Programmierung erklären?

Bonus: Was ist der Unterschied in Englisch zwischen diesen beiden Begriffen? (Entschuldigung, ich bin kein Muttersprachler :))

524voto

Toybuilder Punkte 10701

Emulation ist der Prozess, bei dem das äußerlich beobachtbare Verhalten nachgeahmt wird, um mit einem vorhandenen Ziel übereinzustimmen. Der interne Zustand des Emulationsmechanismus muss nicht unbedingt den internen Zustand des Zielobjekts wiedergeben, das emuliert wird.

Simulation hingegen beinhaltet die Modellierung des zugrunde liegenden Zustands des Ziels. Das Ergebnis einer guten Simulation ist, dass das Simulationsmodell das Ziel emuliert, das es simuliert.

Idealerweise sollten Sie in die Simulation schauen und Eigenschaften beobachten können, die Sie auch sehen würden, wenn Sie in das ursprüngliche Ziel schauen würden. In der Praxis kann es einige Abkürzungen in der Simulation aus Leistungsgründen geben - das heißt, einige interne Aspekte der Simulation können tatsächlich eine Emulation sein.

MAME ist ein Arcade-Spiel-Emulator; Hyperterm ist ein (nicht sehr guter) Terminal-Emulator. Es ist nicht erforderlich, die Arcade-Maschine oder ein Terminal im Detail zu modellieren, um das gewünschte emulierte Verhalten zu erhalten.

Flight Simulator ist ein Simulator; SPICE ist ein Elektronik-Simulator. Sie modellieren so viele Details wie möglich des Ziels, um darzustellen, was das Ziel in der Realität tut.

BEARBEITEN: Andere Antworten haben darauf hingewiesen, dass das Ziel einer Emulation darin besteht, das Objekt, das emuliert wird, ersetzen zu können. Das ist ein wichtiger Punkt. Der Fokus einer Simulation liegt eher auf der Modellierung des internen Zustands des Ziels - und die Simulation führt nicht unbedingt zur Emulation. Insbesondere kann eine Simulation weit langsamer als Echtzeit laufen. SPICE kann beispielsweise nicht für einen tatsächlichen Elektronikschaltkreis substituiert werden (auch wenn man annimmt, dass es eine Art magisches Gerät gäbe, das elektrische Schaltkreise perfekt mit einer SPICE-Simulation verbindet.) Eine Simulation führt nicht immer zu einer Emulation --

37 Stimmen

Nach dieser Definition ist es daher unmöglich, die reale Welt in einer Software zu simulieren? Ich glaube nicht, dass wir den zugrunde liegenden Zustand der realen Welt genau darstellen können - nur beobachtbare Eigenschaften emulieren... vorerst.

11 Stimmen

Ich stimme diesem "[Simulationen] Modell so weit wie möglich jedes Detail des Ziels nachzuahmen, um zu repräsentieren, was das Ziel in der Realität macht." Nicht zu. Simulationen haben das Modell des Zielsystems mit ausreichenden Details basierend auf dem Zweck der Simulation. Zum Beispiel modelliert Flugsimulator wahrscheinlich keine Fische im Meer, weil es für den Zweck der Simulation nutzlos ist.

0 Stimmen

Ich denke, diese Antwort macht die Unterscheidung zwischen den beiden Begriffen verwirrender, da @Toybuilder das Verb "emulieren" in der Definition von Simulation verwendet. In der Literatur wird Emulation oft im Kontext der (teilweisen) Ersetzung des realen Systems verwendet. Das bedeutet, dass Emulation in der realen Weltumgebung operiert und nicht innerhalb der Simulation.

414voto

Henk Holterman Punkte 249753

Wenn ein Flugsimulator dich von A nach B transportieren könnte, wäre es ein Flugemulator.

Ein Emulator kann das Original für den echten Gebrauch ersetzen.
Ein Virtueller PC emuliert einen PC.

Ein Simulator ist ein Modell für Studium und Analyse.

Ein Emulator muss immer nahe am Echtzeitbetrieb arbeiten. Bei einem Simulator ist das nicht immer der Fall. Eine geologische Simulation könnte 1000 Jahre/Sekunde oder mehr durchführen.

7 Stimmen

@Henk Dein Beispiel mit dem "Cockpit" ist fantastisch, obwohl ich es erst verstanden habe, nachdem ich die Antwort von Toybuilder gelesen habe. Danke :)

1 Stimmen

Virtual PC emuliert nicht, es virtualisiert. QEmu hingegen emuliert. In beiden Fällen sollte der Name ein Hinweis sein.

25 Stimmen

Ich denke, es wäre sicher zu sagen, dass Virtual PC einen PC emuliert. WIE es den PC emuliert, erfolgt durch Virtualisierung, aber das ist eher ein Implementierungsdetail. Man könnte argumentieren, dass Hardware-Virtualisierung eine Obermenge der Emulation ist, da sie beschleunigte CPU-Unterstützung, exklusiven Hardwaregerätezugriff usw. bieten kann.

218voto

Dheepak J Punkte 2031

Simulation = Für Analyse und Studium

Emulation = Für den Gebrauch als Ersatz

Ein Simulator ist eine Umgebung, die modelliert, aber ein Emulator ist einer, der den Gebrauch wie auf dem Originalgerät oder -system repliziert.

Ein Simulator ahmt die Aktivität von etwas nach, das er simuliert. Es "scheint" (je nach Kontext kann viel mit diesem "erscheint" passieren), das gleiche wie das zu simulierende Objekt zu sein. Zum Beispiel scheint der Flugsimulator für den Benutzer wie ein echter Flug zu sein, obwohl er dich nicht von einem Ort zum anderen transportiert.

Ein Emulator hingegen tatsächlich "tut", was das zu emulierende Objekt tut, und dabei scheint er auch, das gleiche zu tun. Ein Emulator kann einen anderen Satz von Protokollen zur Nachahmung des zu emulierenden Objekts verwenden, aber das Ergebnis ist immer dasselbe wie beim Originalobjekt. Zum Beispiel emuliert EMU8086 den 8086-Mikroprozessor auf Ihrem Computer, der natürlich nicht auf einem 8086 läuft (= verschiedene Protokolle), aber die Ausgabe, die er liefert, ist die gleiche wie die eines echten 8086.

11 Stimmen

Klarste Antwort, die ich gesehen habe. Für mich könnte sie nur verbessert werden, wenn der zusätzliche Satz weggelassen oder in Ihre ausgezeichneten kontrastierenden Definitionen integriert würde :-D

0 Stimmen

Voll und ganz einverstanden. Es könnte förmlicher sein, indem man sagt, dass ein Emulator die gleiche Schnittstelle und das gleiche Verhalten der emulierten Entität benötigt, während ein Simulator dies nicht tut. Es ist dasselbe wie "Verwendung als Ersatz", aber formaler testbar.

44voto

outis Punkte 71613

Es ist ein Unterschied im Fokus. Emulatoren1 konzentrieren sich darauf, das Verhalten eines Systems nachzubilden, ohne Rücksicht darauf, wie das System intern funktioniert. Simulator2 konzentrieren sich darauf, die Komponenten eines Systems zu modellieren. Du verwendest einen Emulator, wenn es dir hauptsächlich darum geht, was ein System macht, und einen Simulator, wenn es dir darum geht, wie es das macht.

Was ihre allgemeinen englischen Bedeutungen betrifft, bedeutet Nachahmung "der Versuch, einen anderen in Qualitäten oder Handlungen zu übertreffen", während Simulation "zu modellieren, zu replizieren, das Verhalten, das Aussehen oder die Eigenschaften von etwas zu duplizieren". Nicht viel Unterschied. Nachahmung kommt von æmulus, "strebend, rivalisierend", und steht im Zusammenhang mit "imitieren" und "Bild", was eine oberflächliche Ähnlichkeit nahelegt. "Simulation" stammt von similis "ähnlich", wie auch das Wort "ähnlich", was vielleicht eine tiefere Kongruenz nahelegt.

Referenzen:

  1. Wikipedia: Emulator
  2. Wikipedia: Computer Simulation
  3. Wiktionary: Nachahmung
  4. Wiktionary: Simulation
  5. Etymology Online: Nachahmung
  6. Etymology Online: Simulation

0 Stimmen

Deine Antwort unterscheidet sich von den anderen. Ist Virtual PC deiner Meinung nach ein Simulator oder ein Emulator?

0 Stimmen

@MikaëlMayer: Viele der Antworten unterscheiden sich von den anderen, mit nur einigen Ähnlichkeiten. Ich würde meine Antwort als äquivalent (in dem Sinne, dass Dinge auf die gleiche Weise klassifiziert würden) zu Toybuilder und cdiggens's betrachten, und kompatibel mit Jörg's. Es steht nur im Gegensatz zu Pontus und Aeolai's.

0 Stimmen

@MikaëlMayer Virtual PC ist ein Emulator. Es kann alles tun, was ein echter PC kann.

24voto

mins Punkte 5086

Ich denke nicht, dass Emulatoren und Simulator verglichen werden können. Beide ahmen etwas nach, gehören jedoch nicht zum gleichen Bereich des Denkens und werden nicht im gleichen Kontext verwendet.

Kurz gesagt: Ein Emulator ist darauf ausgelegt, einige Funktionen des Originals zu kopieren und es sogar in der realen Umgebung zu ersetzen. Ein Simulator ist nicht dazu ausgelegt, die Funktionen des Originals zu kopieren, sondern nur so ähnlich wie möglich für Menschen auszusehen. Ohne die Funktionen des Originals kann der Simulator es nicht in der realen Umgebung ersetzen.

Ein Emulator ist ein Gerät, das etwas so genau nachahmt, dass es als Ersatz für das echte Ding verwendet werden kann. Zum Beispiel möchte man, dass ein Schaltkreis wie ein ROM (Read-Only-Memory) Schaltkreis funktioniert, aber auch den Inhalt so anpassen, dass er den Bedürfnissen entspricht. Man würde einen ROM-Emulator verwenden, eine Blackbox (wahrscheinlich auf CPU-Basis), die physische und elektrische Schnittstellen hat, die mit dem zu emulierenden ROM kompatibel sind. Der Emulator wird anstelle des echten ROMs in das Gerät gesteckt. Das Motherboard wird während des Betriebs keinen Unterschied feststellen, aber man kann den Inhalt des emulierten ROMs leicht ändern. Anders gesagt, der Emulator wird sich genauso verhalten wie das tatsächliche Ding in seinem Motherboard-Kontext (vielleicht etwas langsamer aufgrund des internen Modells), aber es wird zusätzliche Funktionen (wie das Neuschreiben) geben, die nur für den Designer sichtbar sind, außerhalb des Motherboard-Kontexts. Die Emulatordefinition lautet also: etwas, das das original nachahmt, alle seine funktionale Eigenschaften hat, tatsächlich bis zu einem gewissen Grad in der realen Welt ersetzt werden kann und zusätzliche Funktionen haben kann, die im normalen Kontext nicht sichtbar sind.

Ein Simulator wird in einem anderen Denkkontext verwendet, wie z.B. ein Flugsimulator, ein Autosimulator usw. Die Simulation wird sich nur um einige Aspekte des tatsächlichen Objekts kümmern, normalerweise um diejenigen, die damit zusammenhängen, wie ein Mensch es wahrnehmen und steuern wird. Der Simulator wird die Funktionen des echten Objekts nicht ausführen und kann nicht dafür eingesetzt werden. Der Flugsimulator wird nicht fliegen oder jemanden tragen, das ist überhaupt nicht sein Zweck. Der Simulator soll nicht funktionieren, sondern dem Piloten auf irgendeine Weise wie das tatsächliche Objekt erscheinen, jedoch für andere Zwecke als die normalen, z.B. für das Bodentraining (auch in ungewöhnlichen Situationen wie einem totalen Triebwerksausfall). Die Simulatordefinition lautet also: etwas, das für den Menschen in gewissem Maße wie das Original erscheinen kann, jedoch nicht für den tatsächlichen Gebrauch ersetzt werden kann. Außerdem wird der Pilot wissen, dass der Simulator ein Simulator ist.

Ich denke nicht, dass es einen ROM-Simulator geben wird, weil ROMs nicht mit Menschen interagieren, noch werden wir einen Flugzeugemulator sehen, da Flugzeuge keinen Ersatz haben können, der die gleichen Funktionen in der realen Welt ausführt.

Meiner Meinung nach kann das Modell in einem Emulator oder einem Simulator beliebig sein und muss nicht dem Modell des Originals ähneln. Das Modell eines ROM-Emulators wird wahrscheinlich eher Software als Hardware sein, Microsoft Flight Simulator kann nicht mehr Software sein als er es bereits ist.

Diese Vergleich der beiden Begriffe widerspricht der derzeit ausgewählten Antwort (von Toybuilder), die den Unterschied auf das interne Modell legt, während mein Vorschlag lautet, dass der Unterschied darin liegt, ob das Fälschung tatsächlich die tatsächliche Funktion in der realen Welt ausführen kann oder nicht (bis zu einem gewissen akzeptierten Grad natürlich).

Zu beachten ist, dass der Flugsimulator auch die Erde, die Sonne, den Wind usw. simulieren muss, die nicht zum Flugzeug gehören. Ein Flugsimulator muss also einige Aspekte des Flugzeugs sowie der Umgebung des Flugzeugs nachahmen, weil er nicht in dieser tatsächlichen Umgebung, sondern in einem Trainingsraum verwendet wird.

Dies ist ein großer Unterschied zum Emulator, der nur das Original emuliert und dazu bestimmt ist, in der Umgebung des Originals verwendet zu werden, ohne es zu emulieren. Zurück zum Flugzeugkontext... was könnte ein Flugzeugemulator sein? Vielleicht ein Zug, der zwei Flughäfen - eigentlich zwei Flugzeugstops - verbindet und Passagiere transportiert, mit Stewardessen an Bord, mit einem Innenraum, der wie eine echte Flugzeugkabine aussieht, und mit dem Kapitän, der sagt "Damen und Herren, unsere Flughöhe beträgt derzeit 10 km und die Temperatur an unserem Ziel beträgt 24°C". Der Nutzen ist schwer zu erkennen, äh...

Zusammenfassend gesagt, ist der Emulator ein echtes Gerät, das funktionieren soll, der Simulator ist eine Fälschung, die dazu dient, den Benutzer zu täuschen.

1 Stimmen

Die Phrase "ROM-Emulator" erinnert mich an virtuelle Videospielkonsolen.

1 Stimmen

Kann eine Waschmaschine als Waschemulator bezeichnet werden? Oder ein Geldautomat als Bankauszahlungsschalter-Emulator?

0 Stimmen

@lousycoder: In diesem Zusammenhang ist der Emulator irgendwie nah dran (im Gegensatz zum Simulator), aber ich würde lieber über Automatisierung sprechen aus zwei Gründen: 1/ der Benutzer sieht deutlich den Unterschied zum Original, 2/ das Gerät ersetzt einen Menschen und Automatisierung ist genau das.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X