Núcleo único: ya está hecho (por ejemplo, Vmware 7). Ver, por ejemplo, la segunda publicación aquí:
http://www.replaydebugging.com/
Núcleo múltiple: mucho más difícil.
- ¿Qué es el autómata pushdown?
- ¿Cómo es que jugar GO contra 'la computadora' es diferente al Alpha Go de Google?
- ¿Qué son los microservicios?
- Informática: ¿Cuál es la ventaja de un Pentium sobre un Athlon?
- ¿Cuáles son algunos buenos regalos de Navidad relacionados con la informática?
¿Por qué la diferencia?
Simple de verdad. Al iniciar sesión, solo necesita registrar resultados no deterministas. Bajo un solo núcleo, la mayoría de las instrucciones son deterministas. Por ejemplo, no tiene sentido registrar el resultado de una instrucción add: producirá el mismo resultado. Es necesario registrar cosas como interrupciones y E / S, por supuesto, ya que no son deterministas.
Sin embargo, el multinúcleo hace que la mayoría de las instrucciones de carga sean potencialmente no deterministas, ya que otro núcleo puede cambiar la ubicación de la memoria en particular. Registro de todas las cargas, no factible, desde el punto de vista del rendimiento. Hay formas de mitigar eso, pero aún así, iniciar sesión para reproducir un programa multiproceso que se ejecuta en una máquina de varios núcleos es muy costoso sin soporte de hardware (que, hasta donde sé, actualmente no existe).