博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[操作系统] 死锁预防和死锁避免
阅读量:5102 次
发布时间:2019-06-13

本文共 880 字,大约阅读时间需要 2 分钟。

死锁预防

限制申请方式

  互斥

  占用并等待

  不抢占

    杀死占用资源的进程

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

 

死锁避免

  需要系统具有一些额外的先验信息提供。

    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];

 

  

转载于:https://www.cnblogs.com/cjdty/p/10950462.html

你可能感兴趣的文章
73.fseek与宽字符读取文件
查看>>
git修改远程仓库地址
查看>>
永远的动漫,梦想在,就有远方
查看>>
mysql 查看当前连接及修改连接数
查看>>
springboot No Identifier specified for entity的解决办法
查看>>
【Luogu1303】【模板】A*B Problem
查看>>
慵懒中长大的人,只会挨生活留下的耳光
查看>>
HTML——校友会(bootstrap)
查看>>
【分布计算环境学习笔记】2 分布式系统中的面向对象技术
查看>>
Enable SSH Server
查看>>
宝塔部署项目
查看>>
如何终止线程的运行(C/C++)
查看>>
"远程桌面连接--“发生身份验证错误。要求的函数不受支持
查看>>
【BZOJ1565】 植物大战僵尸
查看>>
视频:"我是设计师"高清完整版Plus拍摄花絮
查看>>
sicp solutions
查看>>
mysql数据库常用命令
查看>>
VALSE2019总结(4)-主题报告
查看>>
浅谈 unix, linux, ios, android 区别和联系
查看>>
PhotoZoom放大图片,真的能无损吗?
查看>>