Process migration

Using binary translators, would it be possible capture the runtime image (instructions and data) of processes and translate these so that the process can run from where it left on a machine with a different architecture? This will be useful for migrating applications to heterogenous systems for purposes of high availability.

this might be possible but the binary translator would be a huge piece of spaggheti-code. Imagine that you would have to write a binary translator from 386 to RISC :

  • you would first have to change the byte order because 386 uses big-endian and RISC
    little endian
  • after you would have to translate all code from intel machine code to risc machine
    code
  • finally you would have to modify your translator to cope with your operating system's idiosyncrasies...

Normally -- well thought out high availability systems have both a failover box and a backup site - a "sister" site with the same species of box that would allow you to run your mission critical app until the flood waters receded.

It's not even remotely practical to try something like that - how would you capture the registers? The PC (program counter) register would not mean anything, for example, going from a Sparc station to Linux running on a PC, for example.

If this were a reasonable choice, wouldn't you expect that big companies with mission critical apps would be doing something like this routinely? No company does a cross-platform thing like this - AFAIK.

If it was possible to find a way of translating the execution state of an application to an intermediate format common to all platforms, we could possibly generate platform specific binary code using this intermediate format. This is an idea that I am exploring since application migration is becoming common for workload management and failover purposes. Indeed, developing such a translator would be a herculean effort but in the long term, is there not potential benefit from this idea? (There may be simpler methods but such a translator could be extended for use for other purposes too.)