Start by imagining an unbounded (infinite) buffer ● Producer process writes data to buffer – Writes to In and moves rightwards ● Consumer process reads data from buffer – Reads from Out and moves rightwards – Should not try to consume if there is no data