Coffman (1971) identified four (4) conditions that
must hold simultaneously for there to be a deadlock.
1. Mutual Exclusion Condition:
1. Mutual Exclusion Condition:
The resources involved are
non-shareable.
Explanation: At least one resource (thread) must be
held in a non-shareable mode, that is, only one process at a time claims
exclusive control of the resource. If another process requests that resource,
the requesting process must be delayed until the resource has been released.
2. Hold and Wait Condition:
2. Hold and Wait Condition:
Requesting process hold already,
resources while waiting for requested resources.
Explanation: There must exist a process that is
holding a resource already allocated to it while waiting for additional
resource that are currently being held by other processes.
3. No-Preemptive Condition:
3. No-Preemptive Condition:
Resources already allocated to a
process cannot be preempted.
Explanation: Resources cannot be removed from the
processes are used to completion or released voluntarily by the process holding
it.
4. Circular Wait Condition:
The processes in the system form a
circular list or chain where each process in the list is waiting for a resource
held by the next process in the list.
As an example, consider the traffic deadlock in the
following figure- Mutual exclusion condition applies, since only one vehicle can be on a section of the street at a time.
- Hold-and-wait condition applies, since each vehicle is occupying a section of the street, and waiting to move on to the next section of the street.
- No-preemptive condition applies, since a section of the street that is a section of the street that is occupied by a vehicle cannot be taken away from it.
- Circular wait condition applies, since each vehicle is waiting on the next vehicle to move. That is, each vehicle in the traffic is waiting for a section of street held by the next vehicle in the traffic.
It is not possible to have a deadlock involving only one single process. The deadlock involves a circular hold-and-wait condition between two or more processes, so one process cannot hold a resource, yet be waiting for another resource that it is holding. In addition, deadlock is not possible between two threads in a process, because it is the process that holds resources, not the thread that is, each thread has access to the resources held by the process.

No comments:
Post a Comment