1. Emulation :
Emulation, as name suggests, is a technique that enables host system to run software or use peripheral devices especially designed for guest system. Its main purpose is to replace hardware or software components with function equivalents when original modules are not available. It mimics hardware and software of target device on computer.
Example : Android SDK, etc.
2. Simulation :
Simulation, as name suggests, is a technique that helps computer to run certain programs developed for different OS. It usually provides essential method of analysis that is easily communication, verified and understood. Its main purpose is to shed light on mechanism that usually control behavior of system. It is totally computer based and uses algorithms and equations.
Example : iOS Simulator, flight simulator, etc.
Difference between Emulation and Simulation :
|It is a process of enabling one computer system to have like another computer system.||It is a process of simulating abstract model of particular computer system.|
|It generally allows to model older hardware and software and then re-create them using current or new technology.||It generally allows experimentation on valid digital representation of system.|
|Its main aim is to replicate experience of using original hardware and software.||Its main aim is to establish virtual and safe environment in which each of these attributes can be tested and refined over full range of production levels.|
|It is simply used to imitate behavior of another program or device, running OS in hardware platform, etc.||It is simply used to predict and forecast future behavior of system, study dynamic behavior of objects or systems, simulation of technology for testing, training, etc.|
|Its advantages include better graphic quality, save space, emulation in video games, add post-processing effects, etc.||Its advantages include increase safety and efficiency, avoid danger and loss of life, slowed down to study behavior more closely, etc.|
|It replaces underlying component with different one that-in respect to user works as old one.||It is finalized typically to anticipate result of reality without touching reality itself.|
|Internal structure is usually written in Machine-Level assembly language.||Internal structure is usually written in high-level language.|
|It includes binary translation due to which it becomes much slower due to latency.||It does not include binary translation due to which it is much faster as compared to emulation.|
|It can be difficult for debugging purpose.||It is more suitable for debugging.|