You could accomplish that with a the use of an OS hypervisor that traps
memory writes via a hardware protection access and journals that to disk
for future rewind/replay. Doing it at the application/compiler level
would be difficult because there would be no synchronization between
applications on the system thus the replay would happen out of sequence
and the results would possibly give you a different outcome. The results
of going forward again would be non-deterministic, though possibly still
good for Monte Carlo analysis.
I do recall somebody has done something like this at the OS level for
the purpose of working with malware, but at the moment I can't remember
who that was. I guess 'I' need to go rewind my grey matter a little, or
go back and re-search all my bookmarks. ;)
Also, a related topic where you can learn some of the tricks of the
trade happen in the fault tolerance 'process migration' arena since
during the migration of a process all memory writes need to be
journalled for replication across both systems. Its all interesting stuff.
btw - Looks like your/somebody's system is already rewound back to
'2008-02-24' because that is the time stamp I got on the email you
posted and I had to scroll back in my inbox just to find that one unread
message.
Jeremy Smith jeremy-at-xanadu.net |yahoogroups/fwdHome| wrote:
> Hi all,
>
> In 2006, or thereabouts, I had an idea for a computer which you could
> 'rewind' and take it back to any earlier instance. It would do this by
> logging every memory write, and every hardware write.
>
> Problems are that you couldn't run a network client like this, because
> the state of the network would change in the interim. However, you could
> have every computer on the network also rewindable.
>