Process synchronization and IPC

Process synchronization (also referred to as process coordination) is a fundamental problem in operating system design and implementation whenever two or more processes must coordinate their activities based upon a condition. A specific problem of synchronization is mutual exclusion, which requires that two or more concurrent activities do not simultaneously access a shared resource. This resource may be shared data among a set of processes where the instructions that access these shared data form a critical region (also referred to as a critical section). Processes involved in synchronization become indirectly aware of each other by waiting on a condition that is set by another process. Processes can also communicate directly with each other through interprocess communication (IPC). IPC causes communication to be sent between two or more processes. A common form of IPC is message passing.