Most emulators just emulate a hardware architecture — if a specific operating system is required for the desired software, it has to be provided as well. Both the OS and the software will then, rather then being run by real hardware, be interpreted by the emulator. Apart from this interpreter for the emulated machine's language, some other hardware (for input/output, etc.) has to be provided in virtual form as well: if writing to a specific memory location should influence the screen, for example, this will have to be emulated in a way.
Emulating an operating system environment is also possible, and faster than interpreting the original OS. Some emulators provide only a compatible environment, not emulating hardware at all. These only run software for the same architecture but different operating systems.
A popular use of emulators is to revive software (mostly games) written for hardware that is no longer sold (for example Commodore 64). Emulating these on one's modern desktop computer is usually less cumbersome than relying on the original machine (which may be broken, has no harddisk, etc.)
Developers of software for embedded systems or video game computers often design their software on especially accurate emulator called a simulator before trying it on the real hardware. This is so that software can be produced and tested before the final hardware exists in large quantities.
(sorted by emulated platform)
|UAE||Unix/X Window System||Amiga|
|STonX||Unix/X Window System||Atari ST|
|Vice||many platforms||Commodore 64|
|MAME||Microsoft Windows||a number of arcade platforms|
|XMAME||Unix/X Window System|
|Wine||Unix/X Window System on IBM PC||Microsoft Windows|
See also: Console emulator