mini|Freier Emulator Stella Linux. Plattformübergreifender Emulator der Atari-2600-Konsole mini|Emulator Hercules. Emulation von Großrechnern
Als Emulator (von ‚nachahmen‘) wird in der Computertechnik ein System bezeichnet, das ein anderes in bestimmten Teilaspekten nachbildet.
Das nachgebildete System erhält die gleichen Daten, führt vergleichbare Programme aus und erzielt die möglichst gleichen Ergebnisse in Bezug auf bestimmte Fragestellungen wie das zu emulierende System.
Software-Emulatoren sind Programme, die einen Computer oder ein Betriebssystem nachbilden und es so ermöglichen, Software für diesen Computer auf einem anderen Computer mit einer anderen Architektur zu verwenden oder zu erstellen. So können z. B. Spiele für ältere Spielekonsolen auf einem PC oder einer neueren Spielekonsole ablaufen. Auch kann ein Softwareentwickler bei der Entwicklung eines Programmes für ein Gerät (z. B. ein Mobiltelefon) dieses im Emulator testen und korrigieren, ohne es jedes Mal auf das Gerät kopieren zu müssen.
Ein Hardware-Emulator ist ein elektronisches Gerät, das ein System wie einen Drucker oder einen Prozessor (CPU) funktionell, elektrisch oder mechanisch (Gehäuse und Pins) nachbilden kann. Die Verbindung zur Prozessorbaugruppe wird mittels Sockel und passendem Stecker erstellt. Er wird auch als In-Circuit-Emulator (ICE) bezeichnet.
Ein Terminalemulator ist eine Software, welche die Funktion eines Terminals (Dateneingabe und Bildschirmausgabe) nachbildet, so dass man z. B. von einem PC auf eine entsprechende Anwendung zugreifen kann.
Emulatoren gehören zu den Interpretern.
Geschichte der Emulation Im Jahre 1962 wurde erstmals ein (Prozessor-)Emulator eingesetzt. IBM arrangierte zahlreiche Tests in La Grande (Frankreich), um die Kompatibilität ihrer neuen Produkte zu den Vorgängern zu prüfen. Dazu nutzte man eine Kombination aus Hard- und Software, die vom IBM-Ingenieur Larry Moss als „Emulator“ bezeichnet wurde. 1965 schließlich wurde die System/360-Linie offiziell veröffentlicht. Sie umfasste auch den ersten Emulator – der „7070 Emulator“ erlaubt die Verwendung von Programmen für das ältere Modell IBM 7070.
1985 erschien der Atari ST mit einer für den Heimcomputermarkt neuen 68000-CPU und dem Betriebssystem Atari-TOS. Anfänglich gab es für diese Hardware noch wenig Anwendungs-Software. Der Übergang von der damals weit verbreiteten 8-Bit-Software unter CP/M zur neuen 16-Bit-Welt wurde von Atari durch den kostenlos mitgelieferten CP/M-Z80-Emulator erleichtert. Dieser reine Softwareemulator erzeugte auf der 68000-Hardware eine virtuelle, vollständige Z80-CPU sowie ein mit CP/M 2.2 kompatibles Betriebssystem. Dadurch war ein problemloser Betrieb populärer wie vorhandener Software möglich.
MegaDrive war 1994 der erste veröffentlichte Videospielemulator, welcher die gleichnamige Konsole nachbildete. Dieser unterstützte nur rudimentär das Spiel Sonic the Hedgehog; Die Entwicklung kam zum Erliegen, nachdem der Programmierer den Quelltext verloren hatte. Im selben Jahr wurde von Chris George die initiale, aber funktionsunfähige Version von „VSMC“ veröffentlicht, womit erstmals das Super Nintendo Entertainment System emuliert wurde.
Druckeremulation Die heute wohl in der EDV häufigsten Emulationen sind Drucker- oder Plotter-emulationen. Fast alle hochwertigen Laserdrucker emulieren zurzeit einen Hewlett-Packard-LaserJet Drucker (HP-PCL), aber auch Rasterdrucker werden emuliert. Häufig sind auch nach wie vor die Emulationen Epson ESC/P, IBM-Proprinter und andere.
Terminalemulation Eine klassische Terminalemulation erlaubt die Interaktion mit textorientierten Programmen, die auf einem entfernten Rechner laufen, über eine externe Schnittstelle, meist eine serielle Leitung oder eine Modemverbindung. Heute hingegen sind Netzwerkverbindungen via TCP/IP die Regel. Terminalemulationen wurden programmiert, um das Verhalten eines „dummen“ Terminals, also eines einfachen Datensicht- und Eingabegerätes, nachzuahmen. Neben den textorientierten Terminalemulationen werden heute vermehrt Lösungen zur Remotebearbeitung mit graphischer Oberfläche (Citrix, MS-Remotedesktop, X-Terminal) eingesetzt. Durch diese graphischen Emulationen können beispielsweise Unix-Benutzer direkt von ihrem Arbeitsplatz aus Programme benutzen, die nur für Windows verfügbar sind (und umgekehrt). Auch die Administration erleichtert sich, da die wesentlichen Wartungs- und Installationsarbeiten nur an einem System, dem Terminal-Server, erfolgen.
Virtuelle Maschine
Eine virtuelle Maschine (kurz: VM) wird oft fälschlicherweise ebenfalls als Emulator bezeichnet. Diese Spezialsoftware erzeugt auf einem Gastgeberrechner eine Laufzeitumgebung, die eigentliche virtuelle Maschine, die die Hardwareschnittstellen des Rechners (oder eines ähnlichen Rechners) abbildet. Ein Gastbetriebssystem läuft – wie üblich – auf der CPU des Gastgeberrechners, jedoch werden alle Zugriffe auf die Ein- und Ausgabehardware auf Softwareschnittstellen des Gastgeberbetriebssystems umgeleitet. Dadurch ist es möglich, unter dem vorhandenen Betriebssystem ein weiteres in einem Fenster auszuführen. Bei professionellen Anwendungen laufen unter einem Hypervisor, einer speziellen Form der VM, gar parallel mehrere Gastbetriebssysteme auf nur einer vorhandenen Hardware; faktisch wird dabei also ein einzelner Rechner in mehrere unterteilt.
Beispiele Mac-on-Linux, das unter Linux-Systemen auf PowerPC-Rechnern Mac OS „Classic“ und Mac OS X/PowerPC virtualisieren konnte; Parallels Desktop for Mac, das das Ausführen von z. B. Windows und Linux unter macOS erlaubt. Einzelne Windows-Anwendungen (genauer: deren Fenster) können sich dabei losgelöst vom virtuellen Windows-Bildschirm „nahtlos“ wie Anwendungen für OS X verhalten; Parallels Workstation, proprietäre Virtualisierung; VMware Workstation, proprietäre Virtualisierung; VirtualBox, kostenlose Virtualisierung, sehr beliebt in privaten und semi-professionellen Bereichen; Virtual PC (Entwicklung eingestellt), Virtualisierung auf einem Windows- oder OS/2-System (auf PowerPC-Macintosh-Rechnern hingegen eine x86-Emulation); Hyper-V, Nachfolger von Windows Virtual PC;
Kompatibilitätsschicht Streng genommen ebenfalls vom Emulator zu unterscheiden ist die „Kompatibilitätsschicht“, die nicht versucht, ein ganzes System zu emulieren, sondern sich auf die Emulation von Softwareschnittstellen beschränkt. Ein bekanntes Beispiel ist Wine, das unter Unix-artigen Betriebssystemen eine Vielzahl der Softwareschnittstellen von Windows bereitstellt, so dass etliche Windows-Programme unter dem eigentlich fremden Betriebssystem lauffähig werden. Ein weiteres Beispiel sind transparente (vom Benutzer nicht wahrgenommene) in das Betriebssystem integrierte Emulatoren. Beispiele dafür sind das bei Windows NT 4.0 auf der Alpha-Architektur integrierte FX!32, das für eine transparente Emulation von x86-Software verwendet wurde, oder klassisches Mac OS, das eine transparente Emulation von m68k-Maschinencode bot, oder macOS (ursprünglich „Mac OS X“), das nach einem Architekturwechsel (von PowerPC zu x86 2005 bzw. von x86 zu Arm 2021) mit Rosetta in bestimmten Versionen ebenfalls eine transparente Emulation als Kompatibilitätsschicht integriert hat.
Siehe auch: Laufzeitumgebung und Programmierschnittstelle
Anwendungsbereiche mini|Software-Emulation des programmierbaren Taschenrechners HP-41CX von 1983 als App auf einem iPhone 6s, 2021. Als Zusatzfunktion kann ein Druckermodus aktiviert werden, der die Ausgabe des damals als Zubehör erhältlichen Thermodruckers emuliert. Emulatoren werden für verschiedene Zwecke eingesetzt: Investitionsschutz: Software, die für ältere Systeme entwickelt worden ist, kann auf modernen Systemen weiter laufen. Beispiel: mittels u. a. Bochs, QEMU, VMware oder Virtual PC wird ein IBM-kompatibler PC emuliert, auf dem z. B. eine entsprechende Version von Windows installiert werden kann; mittels Basilisk II, SheepShaver oder QEMU wird ein m68k- oder PowerPC-Mac emuliert, auf dem z. B. eine ältere Version von Mac OS installiert werden kann. Damit kann für die jeweilige Plattform gekaufte Software, die nun per Emulation auch auf moderneren Systemen weiterhin zur Verfügung steht, trotz Systemwechsels weiter eingesetzt werden, wenn auch mit gewissen Einschränkungen. Das Open-Source-Projekt Wine dagegen emuliert nur die Schnittstellen des Windows-Betriebssystems zur Anwendung. Beispiel: Server von Digital Equipment Corporation – Wegen der hohen Anschaffungskosten sind PDP-11- und VAX-AlphaServer von DEC inklusive des Betriebssystems OpenVMS oft schon seit über zwanzig Jahren im Einsatz. Bei Emulatoren wie Charon kann das Betriebssystem und die dazugehörigen Applikationen unverändert beibehalten werden, während die Emulatoren selbst auf Standardservern installiert werden. Softwareentwicklung: Es ist möglich, Software für andere Systeme zu entwickeln und zu testen. Beispiel: Programme, die für Palm OS auf einem PC entwickelt werden, können mit einem Palm-Emulator getestet werden. Es ist möglich, ein Betriebssystem zu testen. Beispiel: Der Emulator „Bochs“ bietet eine Debug-Schnittstelle an. Hiermit kann man prüfen (oder für Lehrzwecke beobachten), wie und ob etwas funktioniert. Es ist möglich, die Funktionsweise komprimierter oder partiell verschlüsselter Software zu ermitteln. Beispiel: Zwecks Identifizierung unbekannter oder gepackter Malware kann diese in einer Testumgebung auf ihre Funktionsweise untersucht werden. Es kann festgestellt werden, ob es sich um bereits bekannte Malware in verschlüsselter oder gepackter Form handelt. Dies ist in einigen Antivirenprogrammen wie Comodo Internet Security umgesetzt. Ausbildung: Ein Emulator erlaubt es, sich in Systeme einzuarbeiten, deren Anschaffung sonst sehr aufwändig wäre. Beispiel: Mit dem Hercules-Emulator wird auf einem PC ein S/370 emuliert, auf dem ein komplettes MVS installiert wird. Zur Langzeitarchivierung digitaler Objekte stellt die Emulation eine Alternative zur Migration bzw. Konvertierung dar (siehe auch Elektronische Archivierung). Freizeit/Hobby: Konsolenspiele können dank geeigneter Emulatoren wie z. B. MESS oder Dolphin unter diversen Betriebssystemen auf aktueller Hardware laufen, darunter neben alten Konsolenspielen aus den frühen achtziger Jahren auch Spiele für neuere Konsolen. Soundemulatoren wie ASAP oder UADE erlauben zudem die Ausgabe der Musik von Computerspielen. Ergonomie: Software, die normalerweise nur auf Systemen mit unergonomischen Ein-/Ausgabegeräten läuft (LC-Displays), kann auf Systemen mit komfortablen Bildschirmen laufen. Beispiel: Die Bildwiedergabe bei Game-Boy-Emulatoren auf einem PC ist besser als bei einem realen Game Boy. Die MOSC-Szene setzt Emulatoren ein, um an Pay-TV-Angebote kostenlos und illegal zu gelangen. Diese machen meist einen Dump des Original-ROMs der Smartcard und implementieren dieses in einen Emulator für diverse Systeme wie zum Beispiel PCMCIA-PC-Card, DVB-Receiver, DVB-S TV am PC. Der ehemalige Fernsehsender Premiere hatte seinerzeit mit Emulatoren zu kämpfen, da diese genau so funktionieren wie eine Original-Abo-SmartCard des Pay-TV-Senders. Des Weiteren sind nicht nur die verschlüsselten Schlüssel der SmartCard in diesen sog. EMUs enthalten, sondern auch diverse Verschlüsselungsalgorithmen wie z. B. Betacrypt I+II, alle Ableger des Systems Nagravision, Seca Mediaguard, Viaccess etc.
Siehe auch: Simulation, Bochs, DOSBox, MESS, PearPC, QEMU
Hardware-Emulatoren