Emulator

Dosbox emuliert die Befehlszeilenschnittstelle von dos.
Eine Emulation App Für den programmierbaren Taschenrechner von 1983 HP-41CX auf Apple rennen iOS. Zusätzlich die Ausgabe des Historischen Thermodrucker dieser Taschenrechnerlinie kann angezeigt werden.

Im Computer, ein Emulator ist Hardware- oder Software Das ermöglicht einen Computersystem (genannt Gastgeber) sich wie ein anderes Computersystem zu verhalten (genannt das Gast). Mit einem Emulator kann das Host -System in der Regel Software ausführen oder periphere Geräte für das Gastsystem verwenden. Emulation bezieht sich auf die Fähigkeit von a Computer Programm in einem elektronischen Gerät, um ein anderes Programm oder Gerät nachzuahmen (oder nachzuahmen).

Viele DruckerZum Beispiel sind zum Nachahmen ausgelegt, um zu emulieren HP Laserjet Drucker, weil so viel Software für HP -Drucker geschrieben wird. Wenn ein Nicht-HP-Drucker einen HP-Drucker emuliert, wird jede Software, die für einen echten HP-Drucker geschrieben wurde, auch in der Nicht-HP-Druckeremulation ausgeführt und erstellt gleichwertiger Druck. Seit mindestens in den 1990er Jahren viele Videospiel Enthusiasten und Hobbyisten haben Emulatoren verwendet, um Klassiker zu spielen Arcade-Spiele Ab den 1980er Jahren mit dem ursprünglichen Maschinencode und den Daten der Spiele der Spiele der 1980er Jahre, die von einem aktuellen System interpretiert werden und alt nacheisen werden Videospielkonsolen.

Ein Hardware -Emulator ist ein Emulator, der in Form eines Hardware -Geräts in Anspruch genommen wird. Beispiele sind die dos-kompatible Karte, die in einigen 1990er Jahren installiert wurde Macintosh Computers, so wie die Centris 610 oder Performa 630das erlaubte ihnen zu laufen persönlicher Computer (PC) Softwareprogramme und Feldprogrammierbares Gate-Array-basierend Hardware -Emulatoren. Das These der Kirche Impliziert, dass theoretisch jede Betriebsumgebung in jeder anderen Umgebung emuliert werden kann, sofern Speicherbeschränkungen ignoriert werden. In der Praxis kann es jedoch ziemlich schwierig sein, insbesondere wenn das genaue Verhalten des zu emulierten Systems nicht dokumentiert und durch abgeleitet werden muss Reverse Engineering. Es sagt auch nichts über zeitliche Einschränkungen aus; Wenn der Emulator nicht so schnell funktioniert wie mithilfe der ursprünglichen Hardware, kann die Software in der Emulation viel langsamer ausgeführt werden (möglicherweise unterbricht die Timer, die das Verhalten verändern).

"Kann a Commodore 64 emulieren, nacheifern MS-DOS? "Ja, es ist möglich, dass ein [Commodore] 64 einen IBM-PC (der MS-DOS verwendet] im selben Sinne emuliert, dass es möglich ist, auszutreten Lake Michigan mit einer Teelöffel.

-Brief an Berechnen! und redaktionelle Antwort, April 1988[1]

Typen

Windows XP ausführt eine Acorn Archimedes Emulator, der wiederum eine läuft a Sinclair ZX -Spektrum Emulator.
Tetris Laufen auf der Wzonka-lad Game Boy Emulator auf Amigaos, selbst rennen weiter E-UAE auf einer modernen Fedora Linux System.

Die meisten Emulatoren emulieren nur eine Hardwarearchitektur - wenn die Firmware oder Software für Betriebssysteme für die gewünschte Software erforderlich ist, muss sie ebenfalls bereitgestellt werden (und möglicherweise selbst emuliert werden). Sowohl das Betriebssystem als auch die Software werden dann sein interpretiert durch den Emulator, anstatt von nativen Hardware betrieben zu werden. Abgesehen von diesem Dolmetscher für die emulierte Binärin Sprache der MaschineEs müssen auch einige andere Hardware (z. B. Eingabe- oder Ausgabegeräte) in virtueller Form bereitgestellt werden. Wenn das Schreiben in einen bestimmten Speicherort beispielsweise das beeinflussen sollte, was auf dem Bildschirm angezeigt wird, müsste dies emuliert werden. Während die Emulation, wenn sie extrem genommen wird, auf die Atomebene gehen und ihre Ausgabe auf eine Simulation der tatsächlichen Schaltkreise aus einer virtuellen Stromquelle basieren, wäre dies eine äußerst ungewöhnliche Lösung. Emulatoren stoppen normalerweise bei einer Simulation der dokumentierten Hardwarespezifikationen und der digitalen Logik. Eine ausreichende Nachahmung einiger Hardwareplattformen erfordert extreme Genauigkeit, bis hin zu den einzelnen Taktzyklen, undokumentierten Merkmalen, unvorhersehbaren analogen Elementen und Implementierungsfehler. Dies ist insbesondere bei klassischen Heimcomputern wie dem der Fall Commodore 64, deren Software oft von hoch entwickelten Programmiertricks auf niedriger Ebene abhängt, die von Spielprogrammierern und den "erfunden wurden"Demoscene".

Im Gegensatz dazu hatten einige andere Plattformen die direkte Hardware -Adressierung nur sehr wenig, wie z. B. einen Emulator für die PlayStation 4.[2] In diesen Fällen einfach Kompatibilitätsschicht kann ausreichen. Dies übersetzt Systemanforderungen für das Fremdsystem in Systemaufrufe für das Host -System, z. B. die auf *BSD verwendete Linux -Kompatibilitätsschicht, um geschlossene Quellen -Linux -native Software auf Freebsd und Netbsd.[3] Zum Beispiel während der Nintendo 64 Grafikprozessor war vollständig programmierbar, die meisten Spiele verwendeten eines der wenigen vorgefertigten Programme, die größtenteils in sich geschlossen und über das Spiel übermittelt wurden FIFO; Daher emulieren viele Emulatoren den Grafikprozessor überhaupt nicht, sondern interpretieren einfach die von der CPU erhaltenen Befehle wie das ursprüngliche Programm. Entwickler von Software für eingebettete Systeme oder Videospielkonsolen Entwerfen Sie ihre Software häufig auf besonders genauen Emulatoren, die genannt werden Simulatoren Bevor Sie es auf der realen Hardware ausprobieren. Dies ist so, dass Software erzeugt und getestet werden kann, bevor die endgültige Hardware in großen Mengen vorhanden ist, damit sie getestet werden kann, ohne sich die Zeit zu nehmen Debugger. In vielen Fällen wird der Simulator tatsächlich vom Unternehmen hergestellt, das die Hardware bereitstellt, die theoretisch seine Genauigkeit erhöht. Mathematik-Co-Prozessor-Emulatoren ermöglichen es Programmen, die mit mathematischen Anweisungen zusammengestellt werden, auf Maschinen, bei denen der Co-Prozessor nicht installiert ist, aber die zusätzliche Arbeit der CPU kann das System verlangsamen. Wenn ein Mathematik-Koprozessor nicht in der CPU installiert oder vorhanden ist, wird bei der CPU eine CO-Prozessoranweisung ausgeführt, sie wird ein bestimmter Interrupt (Coprocessor nicht verfügbar) und ruft die Routinen der Mathematikemulator auf. Wenn die Anweisung erfolgreich emuliert wird, wird das Programm weiter ausgeführt.

Logiksimulatoren

Die Logiksimulation ist die Verwendung eines Computerprogramms, um den Betrieb einer digitalen Schaltung wie einem Prozessor zu simulieren.[4] Dies geschieht, nachdem eine digitale Schaltung in Logikgleichungen entwickelt wurde, aber bevor die Schaltung in Hardware hergestellt wird.

Funktionelle Emulatoren

Funktionelle Simulation ist die Verwendung eines Computerprogramms zur Simulation der Ausführung eines zweiten Computerprogramms, das in symbolisch geschrieben wurde Montagesprache oder Compiler Sprache und nicht in Binärer Maschinensprache. Durch die Verwendung eines Funktionssimulators können Programmierer ausgewählte Abschnitte von Quellcode ausführen und verfolgen, um nach Programmierfehlern (Fehler) zu suchen, ohne Binärcode zu generieren. Dies unterscheidet sich von der Simulation der Ausführung von Binärcode, der Software -Emulation. Der erste funktionale Simulator wurde von geschrieben von Autonetik Um 1960 zum Testen von Assembly -Sprachprogrammen für eine spätere Ausführung im Militärcomputer D-17b. Dies ermöglichte es, dass Flugprogramme geschrieben, ausgeführt und getestet werden, bevor D-17B-Computerhardware erstellt wurde. Die Autonetik programmierte auch einen Funktionssimulator zum Testen von Flugprogrammen für eine spätere Ausführung im Militärcomputer D-37c.

Videospielkonsole -Emulatoren

Die Emulatoren der Videospielkonsole sind Programme, mit denen eine Personalcomputer- oder Videospielkonsole eine andere Videospielkonsole emulieren kann. Sie werden am häufigsten verwendet, um ältere Videospiele aus den 1980er bis 2000er Jahren auf modernen PCs und zeitgenössischen Videospielkonsolen zu spielen. Sie werden auch verwendet, um Spiele in andere Sprachen zu übersetzen, vorhandene Spiele zu ändern und im Entwicklungsprozess von "Home Brew" DIY Demos und bei der Erstellung neuer Spiele für ältere Systeme. Das Internet hat bei der Verbreitung von Konsolenemulatoren geholfen, da die meisten - wenn nicht alle - in Einzelhandelsgeschäften nicht verfügbar sind. Beispiele für Konsolenemulatoren, die in den letzten Jahrzehnten veröffentlicht wurden, sind: RPCS3, Delfin, Cemu, PCSX2, PPSSPP, Zsnes, Citra, epsxe, Projekt64, Visual Boy Advance, Nestopie, und Yuzu.

Aufgrund ihrer Popularität wurden die Emulatoren von Malware ausbucht. Die meisten dieser Emulatoren sind für Videospielkonsolen wie Xbox 360, Xbox One, Nintendo 3Ds usw. Xbox eins und Xbox 360 Spiele in einem einzigen Programm.[5]

Rechtsfragen

Als Computer und Globale Computernetzwerke Die Entwickler von Emulatoren wurden weiterhin vorangetrieben, und die Zeitspanne zwischen der kommerziellen Freisetzung einer Konsole und ihrer erfolgreichen Emulation begann zu schrumpfen. Fünfte Generation Konsolen wie Nintendo 64, Playstation und Sechste Generation Handhelds wie die Game Boy Advance, sah erhebliche Fortschritte in Richtung Emulation während ihrer Produktion. Dies führte zu einer Anstrengung der Konsolenhersteller, die inoffizielle Emulation zu stoppen, aber konsequente Fehler wie z. Sega v. Auszeichnung 977 F.2d 1510 (9. Cir. 1992), Sony Computer Entertainment, Inc. gegen Connectix Corporation 203 F.3d 596 (2000) und Sony Computer Entertainment America gegen Bleem 214 F.3d 1022 (2000),[6] habe den gegenteiligen Effekt gehabt. Nach allen rechtlichen Präzedenzfällen ist die Emulation in den Vereinigten Staaten legal. Die nicht autorisierte Verteilung des urheberrechtlich geschützten Kodex bleibt jedoch laut länderspezifischen Ländern illegal Urheberrechte © und internationales Urheberrecht nach dem Berner Konvention.[7] Nach dem Gesetz der Vereinigten Staaten a abgeladen Kopie der ursprünglichen Maschine BIOS ist unter dem Urteil legal Lewis Galoob Toys, Inc. v. Nintendo of America, Inc., 964 F.2d 965 (9. Cir. 1992) als faire Nutzung Solange der Benutzer eine legal gekaufte Kopie der Maschine erhielt. Um dies zu mildern, jedoch mehrere Emulatoren für Plattformen wie Game Boy Advance sind in der Lage, ohne BIOS-Datei zu leiten, wobei die Emulation mit hoher Ebene zu einem leichten Kosten der Emulationsgenauigkeit zu simulieren.

Terminal

Terminal -Emulatoren sind Softwareprogramme, die modernen Computern und Geräten interaktiven Zugriff auf Anwendungen bieten Hauptrechner Betriebssysteme oder andere Hostsysteme wie z. HP-UX oder OpenVMS. Terminals wie die IBM 3270 oder VT100 und viele andere werden nicht mehr als physikalische Geräte hergestellt. Stattdessen simuliert Software, die auf modernen Betriebssystemen ausgeführt wird, ein "dummes" Terminal und kann die grafischen und Textelemente der Hostanwendung rendern, Tastenanschläge und Prozessbefehle mithilfe des entsprechenden Terminalprotokolls senden. Einige terminale Emulationsanwendungen umfassen Attachmate Reflexion, IBM persönliche Kommunikation, und Micro Focus Rumba.

Andere Arten

Andere Arten von Emulatoren sind:

  • Schwimmpunktemulator: Einige Floating-Punkt-Hardware unterstützt nur die einfachsten Vorgänge: Addition, Subtraktion und Multiplikation. In Systemen ohne Gleitkomma-Hardware emuliert die CPU sie unter Verwendung einer Reihe einfacherer Arithmetikvorgänge mit fester Punkt, die auf der ganzzahligen arithmetischen Logikeinheit ausgeführt werden.
  • Anweisungssatz Simulator in einem Programmiersprache auf hoher Ebene: Ahmt das Verhalten eines Mainframe nach oder nach Mikroprozessor durch "Lesen" von Anweisungen und Pflege interner Variablen, die den Prozessor darstellen Register.
  • Netzwerkemulation: Eine Technik zum Testen der Leistung realer Anwendungen über ein virtuelles Netzwerk. Dies unterscheidet sich von Netzwerksimulation wo virtuelle Verkehrsmodelle, Netzwerkmodelle, Kanäle und Protokolle angewendet werden.
  • Server -Emulator: Multiplayer-Videospiele basieren häufig auf einen Online-Spielserver, der möglicherweise für eine lokale Installation verfügbar ist oder nicht. Ein Server-Emulator ist ein inoffizieller On-Premises-Server, der das Verhalten des offiziellen Online-Servers nachahmt, obwohl seine interne Arbeit möglicherweise unterschiedlich ist.
  • Semulation: Der Prozess der Steuerung einer Emulation über einen Simulator

Struktur und Organisation

Typischerweise wird ein Emulator in unterteilt in Module das entspricht ungefähr den Subsystemen des emulierten Computers. Meistens besteht ein Emulator aus den folgenden Modulen:

  • Ein CPU -Emulator oder ein CPU -Simulator (die beiden Begriffe sind in diesem Fall größtenteils austauschbar), es sei denn virtuelle Maschine Schicht kann stattdessen verwendet werden
  • Ein Speicher -Subsystem -Modul
  • Verschiedene Eingangs-/Ausgangs -Geräte -Emulatoren

Busse werden häufig aus Leistung oder Einfachheit nicht emuliert, und virtuelle Peripheriegeräte kommunizieren direkt mit der CPU oder dem Speichersubsystem.

Speichersubsystem

Es ist möglich, dass die Emulation des Gedächtnisses Subsystem auf einfach eine Reihe von Elementen reduziert wird, die jeweils ein emuliertes Wort sind. Dieses Modell schlägt jedoch sehr schnell fehl, sobald ein Ort im logischen Speicher des Computers nicht übereinstimmt physikalischer Speicher. Dies ist eindeutig der Fall, wenn die emulierte Hardware eine erweiterte Speicherverwaltung ermöglicht (in diesem Fall die MMU Logik kann in den Speicheremulator eingebettet werden, ein eigenes Modul erstellt oder manchmal in den CPU -Simulator integriert werden). Auch wenn der emulierte Computer jedoch keine MMU verfügt Speicher-abgebildete I/O; Selbst diejenigen, die nicht oft einen Block logischer Speicher haben Rom, was bedeutet, dass das Speicher-Array-Modul verworfen werden muss, wenn die schreibgeschützte Natur von ROM emuliert werden soll. Funktionen wie Bankwechsel oder Segmentierung kann auch die Gedächtnisemulation komplizieren. Infolgedessen implementieren die meisten Emulatoren mindestens zwei Verfahren zum Schreiben und Lesen aus dem logischen Speicher, und es ist die Pflicht dieser Prozeduren, jeden Zugriff auf den richtigen Ort des richtigen Objekts abzubilden.

Auf einem Basis-Grad-Adresssystem, bei dem Speicher von der Adresse von Adresse erfolgt 0 zu adressieren Romsize-1 ist nur schreibgeschützt, während der Rest RAM ist, wäre etwas in der Linie der folgenden Verfahren typisch:

Leere WriteMemory(Wort Adresse, Wort Wert) {   Wort Realaddress;   Realaddress = Adresse + Baseregister;   wenn ((Realaddress < LimitRegister) &&   (Realaddress > Romsize)) {   Erinnerung[Realaddress] = Wert;   } anders {   RaiseTinrupt(INT_SEGFAULT);   } } 
Wort ReadMemory(Wort Adresse) {   Wort Realaddress;   Realaddress=Adresse+Baseregister;   wenn (Realaddress < LimitRegister) {   Rückkehr Erinnerung[Realaddress];   } anders {   RaiseTinrupt(INT_SEGFAULT);   Rückkehr NULL;   } } 

CPU -Simulator

Der CPU -Simulator ist oft der komplizierteste Teil eines Emulators. Viele Emulatoren werden mit "vorverpackten" CPU-Simulatoren geschrieben, um sich auf eine gute und effiziente Emulation einer bestimmten Maschine zu konzentrieren. Die einfachste Form eines CPU -Simulators ist ein Dolmetscher, das ein Computerprogramm ist, das dem Ausführungsfluss des emulierten Programmcodes folgt, und führt für jeden aufgetretenen Maschinencode -Anweisungen Vorgänge auf dem Host -Prozessor aus, der semantisch den ursprünglichen Anweisungen entspricht. Dies wird ermöglicht, indem a zugewiesen werden Variable zu jedem registrieren und Flagge der simulierten CPU. Die Logik der simulierten CPU kann dann mehr oder weniger direkt in Softwarealgorithmen übersetzt werden, wodurch eine Software-Neuauflagen erstellt werden, die im Grunde die ursprüngliche Hardware-Implementierung widerspiegelt.

Das folgende Beispiel zeigt, wie die CPU -Simulation durch einen Dolmetscher erreicht werden kann. In diesem Fall werden Interrupts vor jeder ausgeführten Anweisung überprüft, obwohl dieses Verhalten in realen Emulatoren aus Leistungsgründen selten ist (es ist im Allgemeinen schneller, eine Unterprogramme zu verwenden, um die Arbeit eines Interrupts zu erledigen).

Leere Ausführen(Leere) {   wenn (Unterbrechen ! = Int_none) {   Superuser = STIMMT;   WriteMemory(++Stackpointer, Programm zähler);   Programm zähler = InterruptPointer;   }   Schalter (ReadMemory(Programm zähler++)) {   /*          * Handhabung jeder gültigen Anweisung          * kommt hier her...          */   Ursprünglich:   Unterbrechen = Int_illegal;   } } 

Dolmetscher sind als Computersimulatoren sehr beliebt, da sie viel einfacher zu implementieren sind als zeitlichere alternative Lösungen, und ihre Geschwindigkeit ist mehr als angemessen, um Computer von mehr als ungefähr einem Jahrzehnt auf modernen Maschinen zu emulieren. Die Geschwindigkeitsstrafe, die der Interpretation inhärent ist Größenordnung Als Hostmaschine[zweifelhaft ]. Bis vor nicht vielen Jahren wurde die Emulation in solchen Situationen von vielen als völlig unpraktisch angesehen[zweifelhaft ].

Was diese Einschränkung durchbricht, waren die Fortschritte in Dynamische Neukompilation Techniken[zweifelhaft ]. Einfach a priori Die Übersetzung des emulierten Programmcodes in die in der Hostarchitektur ausgeführte Code ist normalerweise aus mehreren Gründen unmöglich:

  • Code kann sein im RAM modifiziertauch wenn es beim Laden des Codes nur vom emulierten Betriebssystem geändert wird (z. B. von der Festplatte)
  • Es gibt möglicherweise keine Möglichkeit, zuverlässig zu unterscheiden Daten (was nicht übersetzt werden sollte) von ausführbar Code.

Verschiedene Formen der dynamischen Neukompilation, einschließlich der Bevölkerung Gerade in der Zeit Compiler (JIT) Technik, versuchen Sie, diese Probleme zu umgehen, indem Sie warten, bis der Prozessorsteuerungsfluss in einen Ort mit unübersetzter Code springt, und nur dann ("nur rechtzeitig") übersetzt ein Block des Codes in Host -Code, der ausgeführt werden kann. Der übersetzte Code wird in einem gehalten Code Zwischenspeicher[zweifelhaft ]und der ursprüngliche Code ist nicht verloren oder betroffen; Auf diese Weise können sogar Datensegmente (sinnlos) vom Neukompiler übersetzt werden, was nicht mehr als eine Verschwendung von Übersetzungszeiten führt. Die Geschwindigkeit ist möglicherweise nicht wünschenswert, da einige ältere Spiele nicht unter Berücksichtigung schnellerer Computer entworfen wurden. Ein Spiel, das für einen 30 -MHz -PC mit einem Level -Timer von 300 Spielen Sekunden entwickelt wurde, kann dem Spieler nur 30 Sekunden auf einem 300 -MHz -PC verleihen. Andere Programme wie einige DOS -Programme werden möglicherweise nicht einmal auf schnelleren Computern ausgeführt. Insbesondere bei Emulation von Computern, die "geschlossene Box" waren, bei denen Änderungen am Kern des Systems nicht typisch waren, kann Software Techniken verwenden Die Emulationsgeschwindigkeit ist wichtig, damit solche Anwendungen ordnungsgemäß emuliert werden.

Eingabe/Ausgabe (E/O)

Die meisten Emulatoren emulieren nicht, wie bereits erwähnt, die Haupt System Bus; Jedes E/A -Gerät wird daher häufig als Sonderfall behandelt, und es wird keine konsistente Schnittstelle für virtuelle Peripheriegeräte bereitgestellt. Dies kann zu einem Leistungsvorteil führen, da jedes E/A -Modul auf die Eigenschaften des emulierten Geräts zugeschnitten werden kann. Entwürfe basierend auf einem Standard, einheitlich I/O API Kann jedoch mit solchen einfacheren Modellen mithalten, wenn sie gut durchdacht werden, und sie haben den zusätzlichen Vorteil, dass sie "automatisch" einen Plug-in-Service bieten, über den virtuelle Geräte von Drittanbietern im Emulator verwendet werden können. Eine einheitliche E/A -API spiegelt möglicherweise nicht unbedingt die Struktur des realen Hardware -Busses wider: Das Busdesign ist durch mehrere elektrische Einschränkungen und den Bedarf an Hardware begrenzt Parallelität Management, das in einer Software -Implementierung größtenteils ignoriert werden kann.

Selbst bei Emulatoren, die jedes Gerät als Sonderfall behandeln, gibt es normalerweise eine übliche grundlegende Infrastruktur für:

  • Verwaltung Interruptsmit einem Verfahren, bei dem Flags vom CPU -Simulator lesbar lesbar sind, wenn ein Interrupt angehoben wird, sodass die virtuelle CPU "Umfrage für (virtuelle) Interrupts" ermöglicht "
  • Schreiben und Lesen aus dem physischen Gedächtnis durch zwei Verfahren, die denjenigen ähneln, die sich mit dem logischen Gedächtnis befassen (obwohl im Gegensatz zu letzteren das erstere erstere kann Oft ausgelassen werden und direkte Verweise auf das Speicherarray verwendet werden.

Anwendungen

In Erhaltung

Emulation ist eine Strategie zur Verfolgung von Digitale Erhaltung und bekämpfen Veralten. Die Emulation konzentriert sich auf die Nachbildung einer ursprünglichen Computerumgebung, die zeitaufwändig und schwer zu erreichen ist, aber wertvoll, da sie eine engere Verbindung zur Authentizität des digitalen Objekts, des Betriebssystems oder sogar der Spielplattform aufrechterhalten kann.[8] Die Emulation befasst sich mit dem Original Hardware- und Software Umgebung des digitalen Objekts und erstellt es auf einer aktuellen Maschine.[9] Der Emulator ermöglicht dem Benutzer, Zugriff auf jede Art von Art von zu haben Anwendung oder Betriebssystem auf einem Strom Plattform, während Software Läuft wie in seiner ursprünglichen Umgebung.[10] Jeffery Rothenberg, ein früher Befürworter der Emulation als a Digitale Erhaltung Die Strategie besagt: "Der ideale Ansatz würde einen einzigen liefern erweiterbar, langfristige Lösung, die ein für einmal entworfen und für alle und in jedem Aktualisierungszyklus gleichmäßig, automatisch und in organisierter Synchronität angewendet werden kann, für alle Arten von Dokumenten und Medien. "[11] Er gibt ferner an, dass dies nicht nur für veraltete Systeme gelten sollte, sondern auch für zukünftige unbekannte Systeme auf dem Laufenden sein sollte.[12] Praktisch gesehen, wenn eine bestimmte Anwendung in einer neuen Version veröffentlicht wird, anstatt eine Adresse Kompatibilität Probleme und Migration Für jedes digitale Objekt, das in der vorherigen Version davon erstellt wurde AnwendungMan könnte einen Emulator für die erstellen AnwendungErmöglichen Sie den Zugriff auf alle digitalen Objekte.

In New Media Art

Aufgrund der primären Verwendung digitaler Formate, Neue Medienkunst stützt sich stark auf Emulation als Erhaltungstrategie. Künstler wie Cory Arcangel spezialisiert auf die Wiederbelebung der veralteten Technologien in ihrem Kunstwerk und erkennen Sie die Bedeutung von a dezentral und deinstitutionalisiertes Prozess zur Erhaltung der digitalen Kultur. In vielen Fällen besteht das Ziel der Emulation in New Media Art darin, ein digitales Medium so zu bewahren, dass es unbegrenzt und ohne Fehler reproduziert werden kann, sodass es keine Abhängigkeit von Hardware gibt, die altert und veraltet wird. Das Paradoxon ist, dass die Emulation und der Emulator dazu gebracht werden müssen, an zukünftigen Computern zu arbeiten.[13]

Im zukünftigen Systemdesign

Emulationstechniken werden häufig während des Designs und der Entwicklung neuer Systeme eingesetzt. Es erleichtert den Entwicklungsprozess, indem es die Möglichkeit bietet, Fehler im Design zu erkennen, neu zu erstellen und zu reparieren, noch bevor das System tatsächlich aufgebaut ist.[14] Es ist besonders nützlich für die Gestaltung von Multi-Core Systeme, wo Parallelitätsfehler ohne die durch virtuellen Hardware bereitgestellte kontrollierte Umgebung sehr schwer zu erkennen und zu korrigieren können.[15] Dies ermöglicht auch die Softwareentwicklung, bevor die Hardware fertig ist.[16] So helfen Sie, Entwurfsentscheidungen zu validieren und etwas mehr Kontrolle zu geben.

Vergleich mit Simulation

Das Wort "Emulator" wurde 1963 bei IBM geprägt[17] während der Entwicklung des NPL (IBM System/360) Produktlinie mit einem "neuen" Kombination von Software, Mikrocode, und Hardware-".[18] Sie stellten fest, dass die Simulation mit zusätzlichen Anweisungen in implementiert wurde Mikrocode und Hardware anstelle von Software -Simulation, die nur Standardanweisungen verwendet, um Programme für frühere IBM -Computer auszuführen, erhöhte die Simulationsgeschwindigkeit dramatisch. Früher stellte IBM zur Verfügung Simulatoren für z. B. die 650 auf der 705.[19] Zusätzlich zu den Simulatoren hatte IBM Kompatibilitätsfunktionen auf der 709 und 7090,[20] für das es dem IBM 709 -Computer mit einem Programm zur Verfügung stellte, um Legacy -Programme auszuführen, die für die geschrieben wurden IBM 704 auf der 709 und später im IBM 7090. Dieses Programm verwendete die Anweisungen, die von der Kompatibilitätsfunktion hinzugefügt wurden[21] Anweisungen zu fangen, die eine besondere Handhabung erfordern; Alle anderen 704 Anweisungen wurden bei einem 7090 genauso ausgeführt. Die Kompatibilitätsfunktion auf der 1410[22] Erforderte nur ein Konsolenschalter fest, kein Support -Programm.

Als Mikrocode 1963 zum ersten Mal verwendet wurde, um diesen Simulationsprozess zu beschleunigen, prägten IBM -Ingenieure den Begriff "Emulator", um das Konzept zu beschreiben. In den 2000er Jahren ist es üblich geworden, das Wort "emulieren" im Kontext der Software zu verwenden. Vor 1980 bezog sich "Emulation" jedoch nur auf eine Emulation mit einer Hardware- oder Mikrocode -Assistent, während "Simulation" auf reine Software -Emulation Bezug genommen wurde.[23] Beispielsweise ist ein Computer, der speziell für laufende Programme für eine andere Architektur entwickelt wurde, ein Emulator. Im Gegensatz dazu könnte ein Simulator ein Programm sein, das auf einem PC ausgeführt wird, so dass alte Atari -Spiele darauf simuliert werden können. Puristen bestehen weiterhin auf dieser Unterscheidung, aber derzeit bedeutet der Begriff "Emulation" häufig die vollständige Nachahmung einer Maschine, die Binärcode ausführt, während "Simulation" häufig auf Computersimulation, wo ein Computerprogramm verwendet wird, um ein abstraktes Modell zu simulieren. Die Computersimulation wird in praktisch jeder wissenschaftlichen und technischen Domäne und in der Informatik verwendet, wobei mehrere Projekte abstrakte Modelle von Computersystemen simulieren, wie z. Netzwerksimulation, die sowohl praktisch als auch semantisch von der Netzwerkemulation unterscheidet.[24]

Vergleich mit der Hardware -Virtualisierung

Hardware -Virtualisierung ist die Virtualisierung von Computers Als vollständige Hardware -Plattformen, bestimmte logische Abstraktionen ihrer Komponenten oder nur die Funktionalität, die zum Ausführen verschiedener Ausführung erforderlich ist Betriebssysteme. Die Virtualisierung verbirgt die physischen Eigenschaften einer Computerplattform vor den Benutzern und präsentiert stattdessen eine abstrakte Computerplattform.[25][26] Nach ihren Ursprüngen wurde die Software, die Virtualisierung kontrollierte, als "Steuerungsprogramm" bezeichnet, aber die Begriffe "Hypervisor"oder" Virtual Machine Monitor "wurde im Laufe der Zeit bevorzugt.[27] Jeder Hypervisor kann mehrere verwalten oder ausführen virtuelle Maschinen.

Siehe auch

Verweise

  1. ^ Warick, Mike (April 1988). "MS-DOS-Emulation für die 64". Berechnen!. p. 43. Abgerufen 10. November 2013.
  2. ^ Guidestorm. "PlayStation 4 Emulatoren". Abgerufen 2019-08-04.
  3. ^ Linux -Emulation von OpenBSD bei Version 6.0 entfernt https://www.openbsd.org/60.html
  4. ^ Elektronische Designautomatisierung: Synthese, Überprüfung und Test. Laung-Interng Wang, Yao-Wen Chang, Kwang-ting Cheng. Amsterdam: Morgan Kaufmann/Elsevier. 2009. ISBN 978-0-08-092200-3. OCLC 433173319.{{}}: CS1 Wartung: Andere (Link)
  5. ^ "Die Nachahmung der Nachahmung". Malwarebytes Labs. 17. Oktober 2014. Abgerufen 2016-05-30.
  6. ^ sehen Midway Manufacturing Co. gegen Artic International, Inc., 574 F. Supp. 999, aff'd, 704 F.2d 1009 (9. CIR 1982) (Halten des Computer -ROM des PAC -Mann Konvention
  7. ^ "Was ist Emulation?". Koninklijke Bibliotheek. Abgerufen 2007-12-11.
  8. ^ Van der Hoeven, Jeffrey, Bram Lohman und Remco Verdigem. "Emulation für die digitale Erhaltung in der Praxis: die Ergebnisse." Das International Journal of Digital Curation 2.2 (2007): 123-132.
  9. ^ Muira, Gregory. "Überschreiten der Grenzen der traditionellen Kulturerbepolitik: Aufrechterhaltung des langfristigen Zugangs zu Multimedia-Inhalten." IFLA Journal 33 (2007): 323-326.
  10. ^ Rothenberg, Jeffrey (1998). ""Kriterien für eine ideale Lösung." Vermeidung von technologischem Quicksand: Eine tragfähige technische Grundlage für die digitale Erhaltung finden. ". Rat für Bibliotheks- und Informationsressourcen. Washington, D.C. Abgerufen 2008-03-08.
  11. ^ Rothenberg, Jeffrey. "Die Emulationslösung." Vermeiden von technologischem Quicksand: Finden einer tragfähigen technischen Grundlage für die digitale Erhaltung. Washington, DC: Rat für Bibliotheks- und Informationsressourcen, 1998. Rat für Bibliotheks- und Informationsressourcen. 2008. 28. März 2008http://www.clir.org/pubs/reports/rothenberg/contents.html
  12. ^ "Echos der Kunst: Emulation als Erhaltungsstrategie". Archiviert von das Original Am 2007-10-27. Abgerufen 2007-12-11.
  13. ^ Peter Magnusson (2004). "Vollständige Systemsimulation: Fehlender Link der Softwareentwicklung".
  14. ^ "Debugging und vollständige Systemsimulation".
  15. ^ Vania Joloboff (2009). "Vollständige Systemsimulation eingebetteter Systeme" (PDF). Archiviert von das Original (PDF) Am 2014-02-09. Abgerufen 2012-04-22.
  16. ^ Pugh, Emerson W. (1995). Aufbau von IBM: Gestaltung einer Branche und ihrer Technologie. MIT. p. 274. ISBN 0-262-16147-8.
  17. ^ Pugh, Emerson W.; et al. (1991). IBMs 360 und frühe 370 Systeme. MIT. ISBN 0-262-16123-0. Seiten 160-161
  18. ^ Simulation des IBM 650 auf dem IBM 705
  19. ^ "IBM Archives: 7090 Datenverarbeitungssystem (Fortsetzung)". www-03.ibm.com. 23. Januar 2003.
  20. ^ "Systemkompatibilitätsvorgänge". Referenzhandbuch IBM 7090 Datenverarbeitungssystem (PDF). März 1962. S. 65–66. A22-6528-4.
  21. ^ "Systemkompatibilitätsvorgänge". IBM 1410 Operationsgrundsätze (PDF). März 1962. S. 56–57, 98–100. A22-0526-3.
  22. ^ Tucker, S. G (1965). "Emulation großer Systeme". Kommunikation der ACM. 8 (12): 753–61. doi:10.1145/365691.365931. S2CID 15375675.
  23. ^ "Netzwerksimulation oder Emulation?". Netzwerkwelt. Netzwerkwelt. 22. September 2017. Abgerufen 22. September 2017.
  24. ^ Turban, e; König, D.; Lee, J.; Viehland, D. (2008). "19". Elektronischer Handel eine Managementperspektive (PDF) (5. Aufl.). Prentice-Hall. p. 27.
  25. ^ "Virtualisierung in der Bildung" (PDF). IBM. Oktober 2007. Abgerufen 6. Juli 2010.
  26. ^ Creasy, R.J. (1981). "Der Ursprung des VM/370-Zeit-Sharing-Systems" (PDF). IBM. Abgerufen 26. Februar 2013.

Externe Links