Process Addressing in Distributed System
In this article, we will go through the concept of addressing processes involved in communication in Distributed Systems in detail.
In a Message-based communication system, another vital issue is to name or address the processes that are involved in communication. The following are the two types of addressing schemes supported by the Message Process Addressing:
- Explicit Addressing
- Implicit Addressing
Explicit Addressing: In the Explicit Addressing scheme, there is an explicit specification of the process as a parameter in the communication primitive used. The primitives used in Explicit Addressing are as follows:
- Send(process_id, message): A message is sent to the process whose process_id is specified as a parameter.
- Receive(process_id, message): A message is received from the process whose process_id is specified as a parameter.
Implicit Addressing: In the Implicit Addressing scheme, the process that wants to communicate with another process need not be specified explicitly as a parameter in the communication primitive used rather a service_id is specified. The primitives used in Implicit Addressing are as follows:
- Send_any(service_id, message): A message will be sent to any process that provides the service corresponding to the service_id type. In this primitive, the sender names a service in place of process. It finds its application in client-server communications in which the client is least bothered about which server out of a set of servers in providing the service.
- Receive_any(process_id, message): It receives a message from any sending process then returns the process_id of the process that has sent the message. In this primitive, the message can be received from any process by the receiver. It finds its application in client-server communications in which all authorized clients receive service from the server.
Methods for Process Addressing:
machine_id@local_id: This method uses machine and local id for identifying processes. A machine_id refers to the address of the receiver’s machine which is used by sending the machine for sending messages and local_id refers to the process_id or port identifier or name of a receiving process.
Example: Berkeley Unix gives 32 bit IP Addresses and 16-bit process_id or local_id (IP address, port number).
- In order to address the processes, no global coordination is required with this method.
- Migration of processes is not permitted with this method.
machine_id1@local_id@machine_id2: This method is having one extra field of machine_id for migrated processes. That is the reason it is known as Link-based addressing. A machine_id1 recognizes the node or machine where the process was created and local_id is generated by the machine on which the process was created. Here machine_id2 refers to the last known location of the created process. It is used in the case of process migration because when a process migrates to another machine, it lefts the link information which consists of the machine_id of the node to which it is migrating with the current machine. The purpose of this link information is that whenever required messages can be forwarded to the migrated processes.
- It allows the migration of processes.
- It becomes a location overhead, due to the migration of the process several times, The other issue can also arise if a machine gets down due to the reason on which the process was executing then it is quite difficult to locate a process.
Location Transparent Process Addressing:
In the Location Transparent Process Addressing mechanism, when a process is willing to send a message to another process, simply gives a high-level name to the process which is then mapped by name server to its low-level name. For future reference, mapping can be cached also by the sending kernel so that need to contact the name server again is eliminated.
An important goal in the process of addressing is to provide location transparency. The most commonly used method to achieve this goal is to use a two-level naming scheme for processes and a name server to map high-level, machine-independent process names to their low-level, machine-dependent names. A variant of this method of process addressing is used in DEMOSIMP and Charlotte. Although this method of process addressing supports the process migration facility, it suffers from two main drawbacks:
- The overload of locating a process may be large if the process has migrated several times during its lifetime.
- It may not be possible to locate a process if an intermediate node on which the process once resided during its lifetime is down.
Please Login to comment...