What is the Bounded Buffer Problem?
Also called the Producer-Consumer Problem, it describes a scenario where:
The buffer is bounded, meaning it has a limited capacity.
Why is it a Problem?
We need to synchronize access to the buffer because:
-
A producer must wait if the buffer is full.
-
A consumer must wait if the buffer is empty.
-
Only one process (producer or consumer) should modify the buffer at a time to avoid data corruption (race conditions).
Components of the Problem
| Element |
Description |
| Buffer |
Shared, fixed-size storage (array or queue) |
| Producer |
Generates items and puts them in the buffer |
| Consumer |
Takes items out of the buffer and uses them |
| Semaphores |
Used to control access and coordinate activity |
Synchronization Solution Using Semaphores
We use 3 semaphores:
-
mutex – ensures mutual exclusion (binary semaphore, initialized to 1)
-
empty – counts empty slots in the buffer (initialized to buffer size)
-
full – counts filled slots in the buffer (initialized to 0)
Advantages
Challenges
-
Requires careful initialization of semaphores
-
Can lead to deadlocks or starvation if misused
-
Complex in multiprocessor systems