死锁的例子 2PQ都要A 释放A 释放B 测PQ都要B 获得A 3 4 获得B 56 获得A获得B释放A释放B
死锁的例子 获得A 获得B 释放A 释放B 获得B 获得A 释放B 释放A 1 2 3 4 5 6 PQ都要A PQ都要B
进程的一般形式 可能死锁 不会死锁 Process P Process Q Process p Get A Get B Get A Get B Get A release a release A release B Get B release B release release B
进程的一般形式 Process P … Get A … Get B … release A … release B Process Q … Get B … Get A … release B … release A Process P … Get A … release A … Get B … release B 可能死锁 不会死锁
无死锁的例子 2PQ都要A 释放A ■ 3 释放B PQ都要B 获得A 获得B 5 6 获得A释放A获得B释放B
无死锁的例子 获得A 释放A 获得B 释放B 获得B 获得A 释放B 释放A 1 2 3 4 5 6 PQ都要A PQ都要B
可重用资源的分配 进程P 进程Q pp 0 request dq0 request T 1 lock D q1 lock T p2 request T q2 request D p3 lock T q3 lock D p4执行 q4执行 p5 unlock D g5 unlock p6 unlock T g6 unlock D p0p1q0q1p2q2→死锁
可重用资源的分配 p0 p1 q0 q1 p2 q2→死锁 p0 request D p1 lock D p2 request T p3 lock T p4 执行 p5 unlock D p6 unlock T q0 request T q1 lock T q2 request D q3 lock D q4 执行 q5 unlock T q6 unlock D 进程P 进程Q
可重用资源的分配-200k内存 进程P1 进程P2 request 80 kb request 70 kb request 60 bequest 80 kb
可重用资源的分配-200k内存 … request 80 kb … request 60 kb 进程P1 进程P2 … request 70 kb … request 80 kb
可消费资源的分配 进程P1 进程P2 receive(p2 receive(p1); send(p2, m1);send(p1, m2)
可消费资源的分配 … receive (p2); … send (p2,m1); 进程P1 进程P2 … receive (p1); … send (p1,m2);