ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

死锁

2019-08-27 09:01:46  阅读:152  来源: 互联网

标签:请求 终止 死锁 资源 进程 运行


什么是死锁?

死锁是指多个进程在运行过程中因竞争资源而造成的一种僵局(互相等待),若无外力作用,均无法向前推进。

死锁产生的原因?

1.系统资源的竞争

系统资源的竞争导致系统资源不足,以及资源分配不当,导致死锁。

2.进程运行推进顺序不合适

进程在运行过程中,请求和释放资源的顺序不当,会导致死锁。

死锁产生的4个必要条件?

1.互斥条件

一个资源每次只能被一个进程使用,即在一段时间内某资源仅为一进程所占用。若有其他进程请求该资源,则请求进程只能等待。

2.请求和保持条件

进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。【当进程因请求资源而阻塞时,且对已获得的资源保持不放。】

3.不可剥夺条件

进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放(只能是主动释放)。

4.循环等待条件

若干进程间形成首尾相接、循环等待资源的关系。

以上4个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立。而只要上述条件之一不满足,就不会发生死锁。

死锁的预防?

在程序运行之前预防发生死锁。可以通过破坏死锁产生的4个必要条件预防死锁,由于资源互斥是资源使用的固有特性是无法改变的,主要破坏其他3个条件。

1.破坏“请求和保持”条件

第一种静态分配,即每个进程在开始运行前,就一次性地申请它在整个运行过程中所需要的全部资源。

第二种动态分配,进程只需获得运行初期所需要的资源便开始运行,在运行过程中逐步释放掉分配到的已经使用完的资源,然后再去请求新的资源。

2.破坏“不可剥夺”条件

已持有资源的进程在提出新的资源请求没有得到满足时,它必须释放已经保持的所有资源,以后需要使用时再重新申请。

3.破坏“循环等待”条件

采用资源有序分配,其基本思想是将系统中的所有资源顺序编号,将紧缺的、稀少的资源采用较大的编号,在申请资源时必须按照编号的顺序进行,一个进程只有获得较小编号的资源才能申请较大编号的资源。【给资源统一编号,进程只能按编号顺序来请求资源。】

死锁的避免?

在程序运行时避免发生死锁。

基本思想:在使用前进行判断,只允许不会产生死锁的进程申请资源。

利用额外的检验信息(动态检查),在分配资源时判断是否会出现死锁,只有不会出现死锁的情况下才分配资源。

具体实现:银行家算法

通过对进程需求、占有和系统拥有资源的实时统计,确保系统在分配给进程资源不会造成死锁。

可利用资源向量Available——系统中各种资源剩余的数目

最大需求矩阵Max——各个进程对各种资源的最大需求量

分配矩阵Allocation——已经分配给各个进程的各种资源的数目

需求矩阵Need——进程仍需要的资源数目

死锁解除/恢复?

1.抢占资源

从一个或多个进程中抢占足够数量的资源分配给死锁进程,解除死锁状态。

2.终止(撤销)进程

终止或撤销系统中的一个或多个死锁进程,直至打破死锁状态。

a.终止所有死锁进程。

简单粗暴,代价太大,很可能导致一些运行很久的进程终止。

b.逐个终止进程,直至死锁状态解除。

代价也很大,每终止一个进程就需要使用死锁检测来检测系统当前是否处于死锁状态。采用最优策略选择一个“代价最小”的进程解除死锁,根据如下方面来决定终止哪个进程:

进程的优先级、已运行时间及运行完成还需要的时间、已占用系统资源、运行完成还需要的资源、终止进程数目、进程是交互还是批处理。



作者:酷酷的小码农
链接:https://www.jianshu.com/p/0e87c041f6fb
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

标签:请求,终止,死锁,资源,进程,运行
来源: https://www.cnblogs.com/betterquan/p/11416147.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有