The Critical Section Problem
The critical section problem refers to the problem of executing critical sections in a fair, symmetric manner. Solutions to the critical section problem must satisfy each of the following:
Mutual Exclusion: At most one process is in its critical section at
any time.
Progress: If no process is executing its critical section, a
process that wishes to enter can get in.
Bounded Waiting: No process is postponed indefinitely.
An atomic operation is an operation that, once started, completes in a logical indivisible way. Most solutions to the critical section problem rely on the existence of certain atomic operations