洛阳申达电脑维修服务公司
首页 | 联系方式 | 加入收藏 | 设为首页

电脑维修

联系方式

联系人:温小姐
电话:0379-8260505
传真:0379-8260505
邮箱:service@szdingshi.com

当前位置:首页 >> 新闻中心 >> 正文

“死锁”介绍——信维科技

编辑:洛阳申达电脑维修服务公司   时间:2013/07/01   字号:
摘要:“死锁”介绍——信维科技
1、为什么会出现死锁
举一个简单的例子:有两个进程准备扫描文档并记录到CD上。进程A请求扫描仪并获取,而进程B先请求CD刻录机并获取。然后进程A请求CD刻录机,失败了,因为进程B已经拥有了CD刻录机并不愿释放,而且还要请求扫描仪以完成工作。结果是,两个进程谁也无法完成工作,死锁出现了。
关于资源:
扫描仪就是一种资源,从上面可以看出,对资源的请求是发生死锁的根本。其实资源可以是硬件设备(如CD刻录机)或是一组信息(如数据库中一个加锁的记录),简单来说资源就是能够获得、使用以及使用完之后释放的任何东西。
资源分为两类:可抢占的和不可抢占的。可抢占是指资源从拥有它的进程中抢占而不会产生副作用,从这可以看出,对可抢占资源的使用发生死锁时通过重新分配资源就可以解决。
其实有较少部分的死锁不是因为资源而导致的。
2、死锁建模
死锁的规范定义:如果一个进程集合中的每个进程都在等待只能由该进程集合中的其他进程才能引发的事件,那么,该进程集合就是死锁的。
既然是每个进程都在等待,结果就是每个进程都无法引发能够满足其他进程的事件,所有进程都会一直等待。用资源使用的话来说就是,每个进程都还需要另外的资源才能继续,而拥有这些资源的进程不会释放它们,因为这些进程都由于没有足够的资源而继续。
资源死锁的条件及应对策略:
资源死锁的发生有4个必要条件:
①    互斥条件。也就是说一个资源不能被多个进程同时使用。
②    占有和等待条件。已经得到某个资源的进程还可以继续请求另外的资源。
③    不可抢占条件。如上所述,资源被抢占时会引发副作用,只能由拥有它的进程显式释放。
④环路等待条件。存在一种进程循环链,链中每一个进程已获得的资源同时被下一个进程所请求。
有四种处理死锁的策略:①忽略该问题。②检测死锁并恢复。③小心分配资源,避免死锁的发生。④通过破坏引起死锁的4个必要条件之一,防止死锁发生。
3、鸵鸟算法
该算法对应上面的第一种策略:忽略。被叫做鸵鸟算法是缘于这样的一个民间传说:鸵鸟在遇到问题时就会把头埋在沙子里,什么也不管,假装没有问题发生。也许你会感到很纠结:怎么会有这样一个扯淡的算法的?对于数学家,他们的想法跟你一样,绝不能容忍什么也不做的策略。但对于工程师来说,他们却会认真地考虑鸵鸟算法。当死锁发生的概率很低很低,而有一大堆其他问题等着解决时,他们就会对死锁问题采取鸵鸟算法。
4、死锁检测与死锁恢复
死锁检测基于前面提到的环路,也就是检测进程对资源的拥有和请求是否形成了环路,若是,侧说明死锁存在。本文是“简述”,不对检测算法作具体描述。
死锁恢复的方法有3种:①利用抢占恢复。②利用回滚恢复。恢复到更早的状态。③通过杀死进程恢复。实际上,这些方法都不是好方法,有很多缺陷。
5、死锁避免
避免死锁的主要算法基于安全状态的概念。而安全状态是指,如果没有死锁发生,并且即使所有进程突然请求对资源的最大需求,也仍然存在某种调度次序能够使得每一个进程运行完毕,则称该状态是安全的。
死锁避免最着名的算法是银行家算法,就是对每一个请求进行检查,如果满足这一请求后还是安全状态,则满足之,否则推迟对这一请求的满足。
6、死锁预防
死锁预防就是要破坏引起死锁的4个必要条件之一。①破坏互斥条件。使用假脱机技术,模拟多个进程同时占用一个资源。②破坏占用和等待条件。规定所有进程在开始执行之前先请求并获得所需的所有资源。③破坏不可抢占条件。也是使用假脱机技术。④破坏环路等待条件。将所有资源统一编号,进程在请求多个资源时按顺序请求。
上一条:如何给光驱添加关闭命令 下一条:Windows7和Windows8的不同点