Simulation is the imitation of the operation of a real-world process or system over time. The act of simulating something first requires that a model be developed; this model represents the key characteristics or behaviors of the selected physical or abstract system or process. The model represents the system itself, whereas the simulation represents the operation of the system over time.
In computing, an Emulatoris hardware or software or both that duplicates (or emulates) the functions of a first computer system (the guest) in a different second computer system (the host), so that the emulated behavior closely resembles the behavior of the real system. This focus on exact reproduction of behavior is in contrast to some other forms of computer simulation, in which an abstract model of a system is being simulated.
For example, a computer simulation of a hurricane or a chemical reaction is not emulation.
Difference between Simulator and Emulator:
As for their general English meanings, emulation is “the endeavor to equal or to excel another in qualities or actions“, while simulation is “to model, replicate, duplicate the behavior, appearance or properties of”.
Simulation: Every aspect of the real system is only MODELLED by some code and/or mathematics. Simulation attempts to accurately reproduce the behaviour (or predict it) of the real system, but only APPROXIMATE it. A simulation is a model constructed of something else which reproduces some of that thing’s features and leaves others out – obviously you want to preserve the features relevant to your query, and leave out the irrelevant ones.
Emulation: As opposed to simulation, it does not APPROXIMATE the behaviour of the real system, it COPIES the behaviour of the real system. An emulator may be software or hardware. E.g. you get these software EMULATORS for old game consoles like the Sega Genesis. That is an emulator because it COPIES the real genesis functionality so much so that you can run the original Genesis code in the emulator. A genesis simulator would not be able to run the original code, it would only APPROXIMATE its behaviour, producing similar results, depending on how good the models of the original system were. An emulator is a model of a system which will accept any valid input that that the emulated system would accept, and produce the same output or result. So your software is an emulator, only if it reproduces the behavior of the emulated system precisely.
The Simulator tries to duplicate the behavior of the device.
The Emulator tries to duplicate the inner workings of the device.
You use an emulator when you care mostly about what a system does, and a simulator when you care about how it does it. An emulator is an alternative to the real system but a simulator is used to optimize, understand and estimate the real system.
The key difference is that:
With an emulator, you want the output exactly(precisely) match what the object you are emulating would produce.
With a simulator, you want certain properties of your output to be similar to what the object would produce.