Problems with semaphore based programming
 

Critical Regions (without conditions)

A solution to the bounded buffer problem with critical regions
busy wait is not eliminated

Conditional Critical Regions

Solution to the bounded buffer problem without busy wait
How do conditional critical regions solve the problems that occur
     due to inappropriate usage of semaphores ?

Monitiors

Abstraction and encapsulation
procedures entries, one at a time
condition variables ; wait and signal : what happens without them ?
wait and signal of semaphores are different
A monitor based solution to the bounded buffer problem
When a procedure signals another,  which one should execute next ?
            - 2 obvious choices and an intermediate choice