[操作系统] 死锁预防和死锁避免


死锁预防

限制申请方式

  互斥

  占用并等待

  不抢占

    杀死占用资源的进程

  循环等待 对所有资源类型进行排序,并要求每个进程按照资源的顺序进行申请

死锁避免

  需要系统具有一些额外的先验信息提供。
    1.最简单和最有效的模式是要求每个进程声明它可能需要的每个类型资源的最大数目。
    2.资源的分配状态是通过限定提供与分配的资源数量,和进程的最大需求。
    3.死锁避免算法动态检查的资源分配状态,以确保永远不会有一个环形等待状态。

  判断分配之后是否是安全状态,若是,则分配

  系统安全状态:指所有进程,存在安全序列

  处于安全状态=》 没有死锁

  不安全状态=》可能死锁

  避免死锁的话=》确保系统永远不会进入不安全状态

银行家算法

  前提条件

    1. 多个实例

    2. 每个进程都能最大限度的利用资源

    3. 当一个进程请求一个资源,就不得不等待

    4. 当一个进程获得所有资源,就必须再一段有限的时间内释放他们

  基于上述条件,算法长师寻找每一个进程获得的最大资源并且结束的进程请求执行时序,来决定状态是否安全。不存在这样执行时序,就是不安全的。

  

  数据结构

    n=进程数量,m=资源类型数量

    Max(总需求量):n*m矩阵,如果Max[i,j] = k,表示进程Pi最多请求资源类型Rj的k个实例

    Available(剩余空闲量):长度为m的向量。如果Available[j]=k,有k个类型Rj的资源实例可用

    Allocation(已分配量):n*m矩阵。如果Allocation[i,j]=k,则Pi当前非赔了k个Rj的实例

    need(未来需要量):n*m矩阵,如果Need[i,j]=k,则Pi可能需要至少k个Rj实例完成任务    

    Need[i,j]=Max[i,j]-Allocation[i,j];

  

优质内容筛选与推荐>>
1、斯坦纳树
2、Linux下Redis的安装和部署 详细
3、JavaScript内置对象String对象下常用的方法
4、Google给布林新婚妻子送厚礼 投资其公司390万
5、用户管理


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号