

What Is a Deadlock?
In computing, a deadlock is a situation wherein two or more processes are in a difficult or embarrassing predicament. Think of this: Each process is holding on to one resource (like a stubborn squirrel clutching its acorn), and they are all waiting for another resource that happens to be held by someone else. It is like a cosmic game of "I will wait if you will wait." ????
The basic concepts underlying deadlocks are
1 Mutual Exclusion: Resources are possessive little creatures. Take a printer, for example. It insists on serving just one set of print jobs at any time. That is mutual exclusion—no more than one process is allowed to use a resource at any given time.
2 Hold and Wait: Processes can be pretty demanding. They hold on to one resource (like a toddler clings to their favorite toy) while simultaneously holding on and waiting on another resource. It is like saying, "I'm not letting go of this crayon until I get that cookie!"
3 No Preemption: Resources are pretty stubborn. Once a process gets its mitts on something, it won't let it go unless it decides to release it voluntarily. No snatching is allowed!
4 Circular Wait: Imagine a circle of processes each of which is waiting for the process on the left to pass a talking stick. If the stick is never passed, they are in a circular wait. In more detail, with deadlock, it's musical chairs when the music stops, but all are too polite to take a chair.
There are three ways to handle deadlock
Necessary Conditions of Deadlock
* Mutual Exclusion: Resources are loved.
* Hold and Wait: Each process holds resources.
* No Preemption: Resources can't be forcibly taken away.
* Circular Wait: The waiting game is circular.