Emulation is when one computer system is programmed to imitate another computer platform. Applications called emulators allow you to run software written for a particular hardware platform entirely within a simulated environment on another platform.
One common type of emulator simulates an old or obsolete computing platform on a modern device. For example, an emulator for the Motorola 680x0 Macintosh can recreate a classic Mac inside a program window on another computer. These emulators allow you to run software, including the necessary operating system, that is not available for or compatible with modern computers. These types of emulators are popular with computer historians and preservationists.
In addition to simulating old computers, emulators can imitate vintage video game consoles. Emulators are available to simulate consoles like the Super Nintendo or Sega Genesis, letting you play classic games without the original hardware. These emulators open games saved as .ROM files, which store an exact copy of the data from the original game cartridge or disc.
Emulation software can also simulate specific pieces of hardware instead of an entire platform. The most common use for this type of emulation is a disc drive emulator, which allows you to mount a disk image file (for example, an .ISO file in Windows or a .DMG file on macOS) as if you were connecting an external disk or inserting it into an optical drive. Software developers often use these files to distribute software installers. Computer users may also create backup copies of their discs in case of physical damage.
Compared to Virtualization
Emulation is similar to virtualization — both types of technology allow a host computer to run another platform's operating system and applications within a software environment. However, virtualization is easier to achieve.
Virtualization requires that the underlying hardware of the host and guest environments are the same, since virtualization software passes hardware calls from the virtual machine to the physical hardware. In an emulated environment, the emulator must instead translate those hardware calls from what the guest platform expects to what the host can provide. This requires that the host computer be considerably more powerful than the guest system it is emulating to match the same level of performance.