Here is a set of processes. Determine if deadlock is possible. If it is, show a set of interleavings which would produce deadlock.
Set 1
Mutex M1, M2, M3
P1 P2 P3
while (true) { while (true) { while (true) {
1.1 NonCriticalReg(); 2.1 NonCriticalReg(); 3.1 NonCriticalReg();
1.2 MutexLock(&M1); 2.2 MutexLock(&M2); 3.2 MutexLock(&M3);
1.3 MutexLock(&M2); 2.3 MutexLock(&M3); 3.3 MutexLock(&M1);
1.4 CriticalRegion(); 2.4 CriticalRegion(); 3.4 CriticalRegion();
1.5 MutexUnlock(&M2); 2.5 MutexUnlock(&M3); 3.5 MutexUnlock(&M1);
1.6 MutexUnlock(&M1); 2.6 MutexUnlock(&M2); 3.6 MutexUnlock(&M3);
1.7 } 2.7 } 3.7 }