Process Synchronization
Process Synchronization is the task of coordinating the execution of processes in a way that
no two processes can have access to the same shared data and resources.
It is specially needed in a multi-process system when multiple processes are running together,
and more than one processes try to gain access to the same shared resource or data at the same time.
Cooperating Process
A cooperating process is one that can affect or be affected by other processes
running on the system. Cooperating processes can either directly share a
logical address space or be allowed to share data
only through shared memory or message passing.
Race Conditition
A situation where several processes access and manipulate the same data concurrently,
but because of the nature of the device or system, the operations must be done in the proper sequence to be done correctly.
Critical Section
Critical section is a code where it can be accessed by multiple processes. Critical section contains shared variables or resources which are needed to be synchronized to maintain consistency of data variable.
Monitors
Monitors are a synchronization construct that were created to overcome the problems caused by semaphores such as timing errors.
Monitors are abstract data types and contain shared data variables and procedures.
The shared data variables cannot be directly accessed by a process and procedures are required to allow a single process to access the shared data variables at a time.
Deadlock
Deadlock is a situation that occurs in OS when any process enters a waiting state because another waiting process is holding the demanded resource.
Deadlock is a common problem in multi-processing where several processes share a specific type of mutually exclusive resource known as a soft lock or software.