操作系统复习之死锁

第四章、死锁

目录:

      1.基本概念

      2.处理死锁的基本方法

      3.死锁的检测与解除

      4.鸵鸟算法

      5.银行家算法

一、基本概念

      死锁的概念:多个进程循环等待他方占有的资源而无限的僵持下去

      根本原因:1.资源有限 2.进程间推近顺序不当

      死锁的起因:并发进程的资源竞争

      产生死锁的必要条件:互斥条件、不剥夺条件、请求和保持条件、环路条件

二、处理死锁的基本方法

     1.预防死锁的方法:破环“请求和保持条件”(有的资源是不允许被同时访问的,如打印机,这是资源的本身属性决定的,所以这种方法并无实用价值)、破环“不剥夺”条件,破坏“环路等待”条件。

     2.死锁的避免:分配资源时判断是否会出现死锁,如不会死锁,则分配资源;否则,不分配资源。

     3.死锁的检测和恢复:保存资源的请求和分配信息,利用某种算法对这些信息加以检查,以判断是否存在死锁。死锁的检测和恢复算法主要检查是否有循环等待。

三、死锁检测与解除

     1.检测方法:进程资源有向图、死锁定理。

     2.解除方法:资源剥夺法、进程撤销法。

四、鸵鸟算法

      鸵鸟算法即忽略了死锁,UNIX采用的就是鸵鸟算法

      采用该方法的原因:

          1)死锁检测、恢复和预防的方法的算法编写、测试和调度都很复杂

          2)它们会很大程度上地降低系统运行速度

          3)偶尔出现死锁地系统而避免了系统地限制很严格的、不方便的、复杂而且运行速度慢的现象。

五、银行家算法

      1.银行家算法是最具有代表性的避免死锁的算法,又称为“资源分配拒绝”法。

      2.系统状态安全

      3.银行家算法原理

          1)把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于顾客向银行家贷款。

          2)操作系统按照银行家制定的规则为进程分配资源。

          3)当进程首次申请资源时,要检测该进程对资源的最大需求量。

          4)如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。

          5)当进程在执行中继续申请资源时,先检测该进程本次申请的资源数是否超过了该资源所剩余的总量。

          6)若超过则拒绝分配资源。

          7)若能满足,则按当前的申请分配资源,否则推迟分配。

      4.银行家算法描述:一位银行家拥有一定量的资金,有若干客户要贷款,每位客户须在一开始就声明他所需要贷款的总额,若该客户贷款总额不超过银行家的资金总额,银行家可以接受客户的请求。客户贷款是以每次一个资金单位的方式进行的,客户在借满所需要的全部单位款额之后会等待,但银行家需保证这种等待是有限的,可以完成的。

      5.安全性算法

      6.根据银行家算法分配资源并检测系统状态是否安全
















你可能感兴趣的:(操作系统)