16.1

Advantages: Disadvantages:

16.3

  1. If the system call interface is really exactly the same, you could move the complete process image around. If the same OS but a different architecture is involved, then it may require interpretation or recompilation (from some intermediate, non-machine-specific, code representation)

  2. If both the operating system and the architecture are different, your best bet is probably to use a virtual machine that translates (via interpretation or compilation) both the instructions *and* the system calls of the application so it will run on its new host. It's not too hard to imagine doing process migration of Java applications using this method. Basically, it means putting everything into a generic canonical form that can be interpreted from any environment.

16.5

No. Many status gathering programs work from the assumption that prackets may not be received by the destination system. These programs generally broadcast a packet and assume that at least some other systems on their network will receive the information. For instance, a daemon on each system might broadcast the systems load average and number of users. This information might be used for process migration target selection. Another example is a program that determines if a remote site is both running and accessible over the network. If it sends a query and gets no reply it knows the system currently can not be reached.

16.7

I think it is, in general, impossible for A to tell the difference between (a) and (b), unless there are other routes to B, or the link is shared (like ethernet).

Case (c) can typically be distinguished from a and b in practice by using a reliable protocol such as TCP, in which case B's kernel will do its best to acknowledge receipt of packets, even if the application takes a long time to respond. Even if not, you could distinguish (c) from the others by waiting sufficiently long. The trouble is that you don't know *how* long to wait!!

This means that it's difficult to distinguish between a host that has failed from one that is merely unreachable or overloaded. This means: