Escolar Documentos
Profissional Documentos
Cultura Documentos
Synchronization,
Deadlocks
Contents
Cooperating processes
Where is the problem?
Race Condition and Critical Section
Possible Solutions
Semaphores
Classical Synchronization Tasks
Monitors
Examples
The Concept of Deadlock
Resource-Allocation Graph
Approaches to Handling Deadlocks
Deadlock Avoidance
Indirect Communication
Messages are directed and received from mailboxes (also referred
to as ports)
Each mailbox has a unique id and is created by the kernel on request
Processes can communicate only if they share a mailbox
Properties of communication link
Link established only if processes share a common mailbox
A link may be associated with many processes
Each pair of processes may share several communication links
Link may be unidirectional or bi-directional
Benefits of Multithreading
Responsiveness
Easy Resource Sharing
Economy
Utilization of Multi-processor Architectures
However:
Suppose that P0 finishes its critical section quickly and sets turn = 1;
both processes are in their non-critical parts. P0 is quick also in its
non-critical part and wants to enter the critical section. As turn == 1, it
will have to wait even though the critical section is free.
The requirement #2 (Progression) is violated
Moreover, the behaviour inadmissibly depends on the relative speed of
the processes
wait(readcountmutex);
readcount--;
if (readcount==0) signal(wrt);
signal(readcountmutex);
Implementation of philosopher i:
do {
chopStick[i].wait;
chopStick[(i+1) % 5].wait;
eating(); // Now eating
chopStick[i].signal;
chopStick[(i+1) % 5].signal;
thinking(); // Now thinking
} while (TRUE) ;
10
3 3
22
Pi
Pi requests an instance of Rj
Rj
Pi
Pi is holding an instance of Rj
Rj
Deadlock No Deadlock
Conclusions:
If graph contains no cycles no deadlock.
If graph contains a cycle
if only one instance per resource type, then deadlock.
if several instances per resource type, possibility of deadlock.
1. A requests R
2. C requests T
3. A requests S A B C A B C A B C A B C A B C A B C
4. C requests R
5. A releases R R S T R S T R S T R S T R S T R S T
6. A releases S
no deadlock results
No more problems
with B
Process Q
Release(B)
P and Q need
A and B
Require(A)
Deadlock possible
Unsafe state P and Q need B
Require(B)
Questions?