死锁的必要条件

    假设死锁是由于进程竞争资源而引起的,我们下面给出死锁发生的四个必要条件,这四个条件是Coffman首先提出的,所以也称为Coffman条件:

    (1) 资源独占(mutual exclusion): 一个资源在同一时刻只能分配给一个进程. 如果某一进程申请某一资源, 而该资源正被另外某一进程所占有, 则申请者需等待, 直到占有者释放该资源;

    (2) 不可剥夺(no-preemption): 资源申请者不能强行地从资源占有者手中夺取资源. 即资源只能由其占有者在使用完后自愿地释放;

    (3) 保持申请(hold and wait): 进程在占有部分资源后还可申请新的资源, 而且在申请新资源的时候并不释放它已经占有的资源;

    (4) 循环等待(circular wait): 存在一个进程等待序列{p1,p2,,pn}, 其中p1等待p2所占有的某一资源, p2等待p3所占有的某一资源,,pn等待p1所占有的某一资源.

    当且仅当上述四个条件同时满足时, 死锁才会发生. 换言之, 只要破坏上述四个条件中的任意一个, 死锁就不会发生.

猜你喜欢

转载自woshixushigang.iteye.com/blog/1152935