3.1 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			3.1 KiB
		
	
	
	
	
	
	
	
title
| title | 
|---|
| Deadlock | 
Deadlock
The Deadlock Problem
- A set of blocked processes each holding a resource and waiting to acquire a resource held by another process in the set.
 - Example
- System has 2 disk drives.
 - P 1 and P 2 each hold one disk drive and each needs another one.
 
 
Bridge Crossing Example
- Traffic only in one direction.
 - Each section of a bridge can be viewed as a resource.
 - If a deadlock occurs, it can be resolved if one car backs up (preempt resources and rollback).
 - Several cars may have to be backed up if a deadlock occurs.
 - Starvation is possible.
 
Deadlock Characterization
Deadlock can arise if four conditions hold simultaneously.
- Mutual exclusion : only one process at a time can use a resource.
 - Hold and wait : a process holding at least one resource is waiting to acquire additional resources held by other processes.
 - No preemption : a resource can be released only voluntarily by the process holding it, after that process has completed its task.
 - Circular wait : there exists a set { P0, P1, …, P0 } of waiting processes such that P0 is waiting for a resource that is held by P1, P1 is waiting for a resource that is held by P2, …, Pn –1 is waiting for a resource that is held by Pn, and P0 is waiting for a resource that is held by P0.
 
Methods for Handling Deadlocks
- Put the system in a situation where the deadlock can be avoided, i.e. Deadlock Avoidance.
 - Ensure that the system will never enter a deadlock state.
 - Allow the system to enter a deadlock state and then recover.
 - Ignore the problem and pretend that deadlocks never occur in the system; used by most operating systems, including UNIX.
 
Deadlock Prevention
- 
Mutual Exclusion – It is not required for sharable resources; must hold for nonsharable resources.
 - 
Hold and Wait – It must guarantee that whenever a process requests a resource, it does not hold any other resources.
- Require process to request and be allocated all its resources before it begins execution, or allow process to request resources only when the process has none.
 - Low resource utilization; starvation possible.
 
 - 
No Preemption –
- If a process that is holding some resources requests another resource that cannot be immediately allocated to it, then all resources currently being held are released.
 - Preempted resources are added to the list of resources for which the process is waiting.
 - Process will be restarted only when it can regain its old resources, as well as the new ones that it is requesting.
 
 - 
Circular Wait – It imposes a total ordering of all resource types, and require that each process requests resources in an increasing order of enumeration.
 
