死锁产生的必要条件的理解
-
什么是死锁
举一个栗子:
1. 有两个人A,B同时看上了一双鞋。
A穿上了左鞋,B穿上了右鞋。
A想要右鞋但B不给,B想要左鞋而A不给,
于是就僵持住了(发生了死锁) -
下面来讲死锁产生的必要条件:
- 互斥条件(Mutual Exclusion Condition)
一个进程独享一个资源。
如果左鞋能被A和B同时穿上(即资源能被多个进程共享)则不会发生僵持。 - 不剥夺条件( No Preemption Condition)
进程所获得资源在未使用完之前,不能被其他进程夺走。
A不能强行把右鞋从B上脱下来 - 请求并保持条件(Hold and Wait Condition)
进程已经保持了一个资源,又对新的资源做出了请求。
A和B都想要对方脚上的另一只鞋。 - 循环的等待条件
存在一种资源的循环等待链。
A和B都想要对方脚上的鞋。构成环路,如果此时旁边有个人C,C穿着右鞋,则A可以获取C脚上的鞋。
- 互斥条件(Mutual Exclusion Condition)
-
死锁的发生必须同时满足以上四点条件。