- Code migration in distributed systems takes place in the form of process migration. Moving a running process to a different machine is a costly and intricate task. The need for migration is performance.
- The basic idea is that overall system performance can be improved if processes are moved from heavily-loaded to lightly-loaded machines.
- Example: While searching for information in the Web it is easy to implement a search query in the form of a small mobile program that moves from site to site which will achieve a linear speed-up compared to using just a single program instance.
- Support for code migration can also help improve performance by exploiting parallelism, and also provide flexibility.
Dynamically configuring a client:
- If code can move between different machines, it becomes possible to dynamically configure distributed systems.
- This model of dynamically moving code from a remote site does require that the protocol for downloading and initializing code is standardized. Also, it is necessary that the downloaded code can be executed on the client’s machine.
- The advantage of this model of dynamically downloading client side software, is that clients need not have all the software preinstalled to talk to servers. Another advantage is that as long as interfaces are standardized, the client-server protocol and its implementation can be changed.
- The disadvantage is lack of security due to the downloads.
Code migration model:
- The different models for code migration use a particular framework. A process consists of three segments:
- The code segment is the part that contains the set of instructions that make up the program that is being executed.
- The resource segment contains references to external resources needed by the process, such as files, printers, devices, other processes, etc.
- The execution segment is used to store the current execution state of a process, consisting of private data, the stack, and the program counter.
Type of mobility:
- Weak mobility- The minimum need for code migration is to provide only weak mobility. A characteristic feature of weak mobility is that a transferred program is always started from its initial state. Weak mobility requires only that the target machine can execute that code, which essentially boils down to making the code portable
- Strong Mobility- In systems that support strong mobility the execution segment can be transferred. The characteristic feature of strong mobility is that a running process can be stopped, subsequently moved to another machine, and then resume execution where it left off. Clearly, strong mobility is much more powerful than weak mobility, but also much harder to implement.
Types of process to resource binding
- Identifiers- The strongest binding is when a process refers to a resource by its identifier. The process only requires precisely the referenced resource.
- Value- A weaker form of process-to-resource binding is when only the value of a resource is needed. The execution of the process would not be affected if another resource would provide that same value.
- Type- The weakest form of binding is when a process indicates it needs only a resource of a specific type.
Type of resources:
- Unattached-Unattached resources can be easily moved between different machines, and are typically (data) files associated only with the program that is to be migrated
- Fastened- Moving or copying a fastened resource may be possible, but only at relatively high costs.
- Fixed- Fixed resources are intimately bound to a specific machine or environment and cannot be moved. Fixed resources are often local devices.
- Combining three types of process-to-resource bindings, and three types of resource-to-machine bindings, leads to nine combinations that we are needed when migrating code.
Mobile Agents:
- A mobile agent is simply an agent having the capability to move between different machines. Mobile agents often require support for strong mobility. The requirement of strong mobility is needed as agents are autonomous and actively interact with their environment.
- Moving an agent to another machine can hardly be done without considering its execution state. D’Agents system are an example of mobile agents where the combination of agents and weak mobility is useful.
- The ability to collaborate with other agents or to move between different machines are system properties of agents.