Inter-Process Communication

Process A and process B are called Independent Processes if the execution/output of process A doesn't affect the execution/output of process B and vise versa. On the other hand, Cooperating Processes are those whose execution/output can affect or be affected by this of other processes.

Reasons that we might be interested in having two processes cooperating with each other are:

  1. Information Sharing: Several processes might need to access the same file/content.
  2. Computation speedup: If we divide a problem into smaller pieces, and assign each process a task/piece, we might solve the problem faster with several processes than with one process.
  3. Modularity: Some applications may benefit from division into modules, each controlled by a process.
  4. Convenience: Dividing a major activity into smaller, inter-connected activities is convenient for the user.

Cooperating processes require some type of inter-process communication, abbreviated as IPC, which is most commonly one of two types: Shared Memory systems or Message Passing systems.