Un simulador de computadora es un programa que se ejecuta en una computadora con el propósito de simular algún tipo de sistema, con el fin de tener una mejor idea de cómo funciona el sistema. También se puede utilizar un simulador de computadora para simular otra computadora. Hay dos tipos principales: el simulador de sistema completo y el simulador de conjunto de instrucciones (ISS). Este tipo de simulador de computadora se usa a menudo para probar software nuevo en una amplia gama de configuraciones de hardware, sin tener que usar las computadoras físicas.
En su nivel más fundamental, se utiliza un simulador de computadora para recrear una situación de la vida real en la que probar muchos estados diferentes no sería fácil ni seguro. En este caso, el uso de un simulador de computadora ahorra una gran cantidad de tiempo y recursos y, de hecho, puede permitir pruebas en profundidad que serían físicamente imposibles en el mundo real. Las simulaciones por computadora se han utilizado en ingeniería y ciencia durante algún tiempo, y en los últimos años, a medida que el hardware se ha vuelto más robusto y el software se ha vuelto más sofisticado, estas simulaciones pueden lograr cada vez más.
Un ejemplo del uso de un simulador por computadora podría ser una empresa de ingeniería que trabaja en el diseño de un ala mejor para aviones. En lugar de gastar recursos en la construcción de prototipos de cada nuevo diseño y probarlos en túneles de viento o en aviones reales, se puede ejecutar una simulación. Si la dinámica de fluidos del viento se modela con precisión, se puede modificar cualquier cantidad de variables para probar un ala virtual en un millón de escenarios diferentes, algunos de los cuales podrían ser imposibles de recrear en el mundo real. Además, si un diseño resulta no ser ideal, se puede modificar y volver a probar fácilmente, sin la necesidad de construir un nuevo objeto físico. De esta manera, se pueden probar cientos o miles de diseños en un período de tiempo relativamente corto, lo que permite un grado mucho mayor de ajuste fino de lo que sería posible de otro modo.
Con la proliferación de hardware, los fabricantes de software también encuentran la necesidad de simular diferentes entornos para sus programas. Dado que no sería factible ejecutar una pieza de software en cada computadora del mundo, mucho menos ejecutarlo en cada sistema modificado con más o menos memoria de video, tarjetas de sonido de terceros y las docenas de otros componentes que se pueden personalizar, en su lugar, se utiliza un simulador de computadora. De esta manera, el software se puede ejecutar en decenas de miles de configuraciones de hardware hipotéticas, y los errores se pueden detectar y corregir mucho antes de que el producto se envíe a los clientes.
Los simuladores de conjuntos de instrucciones se utilizan comúnmente para esta tarea. Pueden tener variables modificadas que representan diferentes limitaciones de hardware de diferentes máquinas. Estas variables se pueden cambiar, el programa se puede ejecutar y luego las variables se pueden cambiar nuevamente, lo que permite al programador probar muchos sistemas en un corto período de tiempo.
Otro tipo de simulador es el simulador de sistema completo. Aunque es similar a un ISS, un simulador de sistema completo permite un entorno mucho más completo, al permitir que se simulen sistemas operativos y controladores de software completos. Esto permite un grado aún mayor de precisión en la simulación, lo que brinda una mejor oportunidad para detectar y reparar errores.