Semaphore ========= This program uses a Semaphore variable to implement mutual exclusion between two asynchronous processes. Each process has four states: idle , entering , critical and exiting. The entering state indicates that the process wants to enter its critical section. If the Semaphore is false, the process set it to true and enter critical state. On exiting the critical section, the process sets the Semaphore to false again.