18.3. Livelock and starvation

Before proceeding to further investigation of the problem of deadlock it should be pointed out that processes need not necessarily be in the blocked state for there to be no possibility of progress. An example is busy waiting on a condition that can never become true. The process loops, testing the condition indefinitely. This condition is sometimes referred to as 'livelock'.

Communications protocols must be analysed to make sure they do not degenerate into an indefinite 'ping-pong' behaviour when systems are congested. If communication is attempted between two congested systems, packets are likely to be discarded at both ends because buffer space is exhausted. The congestion is worsened by resending messages, replies, ...

Get Operating Systems: Concurrent and Distributed Software Design now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.