搜索
写经验 领红包

死锁产生的原因及四个必要条件(死锁产生的原因和解决方法)

导语:“死锁”形成的条件及分析,读完之后,大部分程序员收藏了

1.“死锁”的含义

所谓死锁: 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

2.“死锁”产生的原因以及四个必要条件的合理解释

产生死锁的原因可归结为如下两点:

(1)竞争资源。当系统中供多个进程共享的资源如打印机、公用队列等,其数目不足以满足进程的需要时,会引起诸进程的竞争而产生死锁。

(2)进程间推进顺序非法。进程在运行过程中,请求和释放资源的顺序不当,也同样会导致产生进程死锁。

3.产生死锁的四个必要条件:

1.互斥(Mutual exclusion):存在这样一种资源,它在某个时刻只能被分配给一个执行绪(也称为线程)使用;

2.持有(Hold and wait):当请求的资源已被占用从而导致执行绪阻塞时,资源占用者不但无需释放该资源,而且还可以继续请求更多资源;

3.不可剥夺(No preemption):执行绪获得到的互斥资源不可被强行剥夺,换句话说,只有资源占用者自己才能释放资源;

4.环形等待(Circular wait):若干执行绪以不同的次序获取互斥资源,从而形成环形等待的局面,想象在由多个执行绪组成的环形链中,每个执行绪都在等待下一个执行绪释放它持有的资源。

4.“死锁”的预防和解除

理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁,消除产生死锁的四个必要条件中的任何一个都可以预防和解除死锁。

不难看出,在死锁的四个必要条件中,第二、三和四项条件比较容易消除。

1、静态分配:采用资源静态分配策略(进程资源静态分配方式是指一个进程在建立时就分配了它需要的全部资源),破坏&34;条件;

2、可剥夺:允许进程剥夺使用其他进程占有的资源,从而破坏&34;条件;

3、有序分配:采用资源有序分配法,破坏&34;条件。

关注

感谢阅读,如果这篇文章帮助了您,欢迎 点赞 ,收藏,关注,转发 哟。您的帮助是我们前行的动力,我们会提供更多有价值的内容给大家... 谢谢!

本文内容由小余整理编辑!