– During execution in multiprocessor systems or systems using multi–threading technology, processes and threads often need to communicate with each other.
– They require for maintaining synchronization i.e., they need to know how much each other have accomplished.
– If the operating system allows these threads and processes to communicate, they would crash or hang the system or even put it in to a deadlock.
– That’s why operating systems never let two processes communicate directly.
– For safe communication between the processes, operating systems has its own special mechanism called the inter–process communication.
– Even though it is indirect, it makes the communication between the two processes quite safe and predictable.
– However, this capability is not supported by all of the operating systems.
– Only some of the operating systems have this capability of supporting the communication between the processes.
– These processes might be executing on the same system or they may be on remote hosts connected through a network.
– The inter process communication in short is known as IPC.
– Through inert – process communication one application can explicitly control the other one.
– It even lets different process share the common resources or data without interfering in to each other’s work.
– The single processor operating systems do not usually support this mechanism such as the DOS.
– However, operating systems such as the MS Windows and the OS/ 2 come with support for the IPC mechanism.
– This mechanism is known as the DDE.
– There is a frequent need for the processes to communicate with each other, for example in the shell pipeline.
– Here, the output from first process is passed on to the second, from second to third and the chain goes on.
– This cannot be done every time using the interrupts since that will be so unstructured.
– Therefore, we used a well-structured way i.e., the IPC.
– If the processes are running on two different systems and both have different operating systems, then a mediator has to be used.
– These mediators are usually the protocols.
– Operating systems provides other facilities for inter – process communication such as the shared memory, message queues, and semaphores and so on.
– These resources are used by the distributed systems for proving the API (application interface programming).
– This allows programming of the IPC at a high level of abstraction.
– In distributed systems, IPC is also required for the exchange of the info among the processes that are independent.
– In these systems, the processes that want to engage in IPC must commit to using a protocol for which they all should agree.
– A process may be either a sender or a receiver or both.
– When only one process sends info to another one process, then this is called a unicast IPC or if one process sends to a group of processes, it is called a multicast IPC.
– In IPC the following operations are involved:
– For inter process communication synchronization of the operations of the two processes is very much required.
– The send operation commences before the receive operation.
– Synchronization is not possible without system support.
– IPC also provides synchronization using the blocking technique.
– This blocks the further processing until the completion of the operation.
– IPC may also provide non-blocking or asynchronous operations.
– These operations do not block processing rather it is free to process.
– Upon the completion of the operation, the process is notified.
– If the inter process communication mechanism issues the blocking operations in a wrong sequence, they can put the processes in to a deadlock.
– And deadlocks are not at all desirable.
– For detecting potential deadlocks, time out can be used.
– When an IPC programming interface is being used, it is useful to notice whether the operations taking place are asynchronous or synchronous.
– If the IPC provides only one blocking operation, then the responsibility of using the threads or the child processes is of the user if he/ she desire asynchronous operations.