How hold and wait is different from circular wait?

Hold and Wait and Circular Wait are conditions that are met when deadlocks occur.

This means that if these two conditions are not met, you will not be in a deadlock.

The hold and wait condition states that the process is holding onto a resource/s that may (or may not) be required by other processes. The key point here is that the process is holding onto those resources and will not release them until it gets access to the requested resources (which are being held by other processes).

The circular wait condition states that there exists a chain of processes where each process is waiting for a resource that is being held by another process. In this condition it does not necessarily mean that the process is holding onto a resource that the other is requesting, but rather that all processes are waiting for a resource that is being held by another process.

See these articles for more information:

http://www.cs.yale.edu/homes/aspnes/pinewiki/Deadlock.html http://nob.cs.ucdavis.edu/classes/ecs150-1999-02/dl-cond.html