网络工程师第一章辅导:死锁问题
各进程在使用系统资源时,应注意系统产生死锁问题。下面先介绍什么是死锁。
1 死锁的概念
1. 死锁的定义
只有4个条件都满足时,才会出现死锁
(1) 互斥条件:并发进程所要求和占有的资源是不能同时被两个以上进程使用或操作的,进程对它所需要的资源进行排它性控制。
(3) 部分分配:进程每次申请它所需要的一部分资源,在等待新资源的继续占用已分配到的资源
2 死锁的排除方法
处理死锁的基本方法可归结为以下3种:
方法 |
资源分配策略 |
各种可能模式 |
主要优点 |
主要缺点 |
预防 Prevention |
保守的;宁可资源闲置 |
一次请求所有资源 资源剥夺 资源按序申请 |
适用于作突发式处理的进程;不必剥夺 适用于状态可以保存和恢复的资源 可以在编译时(而不必在运行时)就进行检查 |
效率低;进程初始化时间延长 剥夺次数过多;多次对资源重新起动 不便灵活申请新资源 |
避免 Avoidance |
是"预防"和"检测"的折衷(在运行时判断是否可能死锁) |
寻找可能的安全的运行顺序 |
不必进行剥夺 |
必须知道将来的资源需求;进程可能会长时间阻塞 |
检测 Detection |
宽松的;只要允许,就分配资源 |
定期检查死锁是否已经发生 |
不延长进程初始化时间;允许对死锁进行现场处理 |
通过剥夺解除死锁,造成损失 |
1. 死锁的预防
死锁的预防:是采用某种策略,限制并发进程对资源的请求,使系统在任何时刻都不满足死锁的必要条件。
预防死锁的三种策略:
打破死锁资源的互斥和不可剥夺这两个条件
缺点:不能解决访问那些不允许被同时访问的资源时所带来的死锁问题。
打破资源的部分分配这个死锁产生的必要条件
缺点:在许多情况下,一个进程在执行之前不可能提出它所需要的全部资源。
无论所需资源何时用到,一个进程只有在所有要求资源都得到满足后才开始执行。
对于那些不经常使用的资源,进程在生存过程期间一直占用它们是一种极大的浪费。
降低了进程的并发性。
打破死锁的环路条件
缺点:限制了进程对资源的请求,而且对资源的分类编序也耗去一定的系统开销。
2. 死锁的避免 死锁的避免:在系统运行过程中,对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,若分配后系统可能发生死锁,则不予分配,否则予以分配。在分配资源时判断是否会出现死锁,如不会死锁,则分配资源。
死锁避免的一种基本模式是把进程分为多个步,其中每个步所使用的资源是固定的,且在一个步内,进程所保持的资源数不变。即进程的资源请求、使用与释放要依靠不同的步完成。
3. 死锁的检测和恢复
保存资源的请求和分配信息,利用某种算法对这些信息加以检查,以判断是否存在死锁。死锁检测算法主要是检查是否有循环等待。编辑推荐:
温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)
点击加载更多评论>>