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


    死锁预防

    限制申请方式

      互斥

      占用并等待

      不抢占

        杀死占用资源的进程

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

    死锁避免

      需要系统具有一些额外的先验信息提供。
        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];

      

  • 相关阅读:
    (转)学习笔记viewController(欢迎指错)
    配置Xcode版本控制SVN详细步骤内含解决Xcode/Mac OS10.8无法配置SVN的解决方法(转)
    iPhone 3G/3GS(有锁)基带与导航功能
    [转]Iphone 3G/3Gs Home键失灵的根本原因和解决方法
    NSDate的常用用法(转)
    短信操作(转)
    如何在Symbian SDK下使用GCCE4(转)
    nS60_sdk_v1_2的VC6问题(转)
    如何获取应用程序图标(转)
    如何实现圆角的UITextView iphone短信发送(非系统界面)
  • 原文地址:https://www.cnblogs.com/cjdty/p/10950462.html
Copyright © 2020-2023  润新知