Deadlock can occur when the permanent blocking of a set of processes compete for the same system resources. A set of processes is deadlocked when each process in the set is blocked awaiting an event that can only be triggered by another blocked process in the set. Deadlock is permanent because none of the events are ever triggered. Three conditions must take place for a deadlock to take place. The first one is Mutual exclusion, which is a single process that uses one resource at a time. No process may access a resource unit that is being utilized by another process. ...view middle of the document...
This condition is an immediate result of the first three. Below is a self-explanatory illustration of Deadlock.
Deadlock blocks a set of processes that competes for system resources. This can be permanent unless the OS takes action, such as forcing one or more processes to backtrack. Deadlock may involve consumable or reusable resources. A reusable resource is one that is not depleted by use. A consumable resource is one that is destroyed when it is obtained by a process. There are three approaches to dealing with deadlock: prevention, detection, and avoidance. Prevention guarantees that deadlocks will not happen. Detection is required if the OS is willing to grant resource requests; the OS checks for deadlocks and takes action to break the deadlock. Avoidance involves the analysis of each new resource request to determine if it could lead to deadlock, and granting it only if deadlock is not an option. For Windows you can run driver verifier to scan for any corrupted drivers, which may be causing problems, this program works by running various stress tests on drivers, in order to produce a BSOD, which will locate the driver. To the best of my knowledge deadlocks are ignored by Linux operating systems.
Operating Systems: Internals and Design Principles, 7/e E-Book for University of Phoenix, O. (2008). Operating Systems: Internals and Design Principles, 7/e E-Book for University of Phoenix.