¿Cuál es la diferencia entre un entorno virtualizado y un simulador / emulador?

La virtualización utiliza un hipervisor, que proporciona abstracción de hardware sintético, lo que significa que la virtualización puede ejecutarse con el mismo rendimiento que si se ejecutara en hardware físico.

Simulación / Emulación se ejecuta como un emulador de tiempo de ejecución de hardware físico. Esto generalmente tiene un rendimiento muy reducido porque el sistema intermediario está ajustando su emulación a medida que avanza.

Un ejemplo de esto es ejecutar un sistema operativo no compatible en, por ejemplo, Microsoft Hyper-V. Si bien Hyper-V es un entorno de virtualización adecuado, si no hay un controlador sintético para el adaptador de red, Hyper-V debe EMULAR el adaptador de red. Y la diferencia es significativa. Apenas puede ejecutar una conexión de red de 10Mbps, y probablemente solo obtendrá el 10% de eso en un controlador emulado, donde un controlador sintético proporcionará acceso directo al hardware y se ejecutará a 100Mbps completos (o incluso hasta 10Gbps si usa una red virtual privada entre VM).

Me encontré con esto cuando estaba configurando una aplicación virtual pfsense. Fue horrible. Y luego descubrí que alguien tenía un pfsense con integración de Hyper-V, que incluía un controlador sintético adecuado, y ahora funciona tan rápido como un dispositivo físico.

La emulación solo debe usarse para pruebas y es popular para el desarrollo móvil (emulando un iPhone, por ejemplo).

No creo que haya una distinción formal, pero esperaría que un simulador de CPU ofrezca alguna forma para que el usuario pause la ejecución de un programa en ejecución e inspeccione los registros y la memoria, mientras que no esperaría estas características en un entorno virtualizado. Tiendo a pensar en los simuladores como ayudas de entrenamiento y depuración, mientras que las máquinas virtuales son para producción.