Compare and analyze any two major variations of message passing systems


Let us discuss about the below two types of message passing systems, which are as follows −

Client Server Message Passing

Consider an application that you are trying to read data from the filesystem. That means here the application is a client requesting the data from a server. This client or server model introduces many process states that are associated with message passing.

Initially, the server has to wait for a message to arrive from another system which is present somewhere else. At this point, the server is said to be receive-blocked.

When a message is received, the server enters into the READY state, and it is capable of running. Suppose, if it is the highest-priority READY process, it gets the CPU and can perform some processing. Since it is a server, it looks at the message received and decides what to do about it.

At some point, the server will complete whatever job the message told it to do, and then give a reply to the client.

Now let us switch to the client-side. Starting the client is running along, and consuming CPU, till it decides to send a message. The client changed from READY to send blocked or reply-blocked, based on the state of the server that it sent a message to.

Generally, we will see the reply-blocked state is more often than the send-blocked state. Because the reply-blocked state means −

The server has received the message and is now processing it. At a point, the server completes processing and will reply to the client. The client is blocked waiting for this reply.

Contrast that with the send-blocked state.

The server did not receive the message, because it was busy handling other messages first. When the server gets receiving a client message, then we will go from the send blocked state to the reply-blocked state.

Network-distributed Message passing

Let us inherit the characteristics of a network: they can become network-distributed with far less work than on other systems. But the benefit that we find most useful is that they let you test software in a nice, modular manner.

We are probably working on large projects where many people have to provide different pieces of software. Of course, some of these people are done sooner or later than others.

Generally, it has problems at two stages, which are as follows −

  • Starting from the concept at definition time, it's hard to decide where one person's development effort ends and another person begins.

  • Then at testing or integration time, it is not possible to do full systems integration testing because all the pieces are not available.

The individual components of a concept can be decoupled easily, leading to a very simple design and reasonably simple testing.

If we want to think about this in terms of existing paradigms, it is similar to the concept that is used in Object-Oriented Programming (OOP).

Updated on: 01-Dec-2021

104 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements