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

08月19日 收藏 0 评论 6 java开发

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

转载声明:文章来源https://www.cnblogs.com/cjdty/p/10950462.html

死锁

限制申请方式

互斥占用并等待

不抢占

杀死占用资源的进程

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

死锁避免

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

C 6条回复 评论
呵呵

接口测试工具的话可以试试国产的接口测试工具apipost,使用起来很方便简介,不需要安装环境,全中文使用起来方便。下载地址:https://www.apipost.cn

发表于 2022-10-14 22:00:00
0 0
下雨天睡觉

终于弄懂这个知识点了!!!

发表于 2022-06-28 22:00:00
0 0
肖白刃

整个看下来还是感觉迷迷糊糊的

发表于 2021-11-13 23:00:00
0 0
壁虎极点多

这几个问题答好了面试基本稳了吧

发表于 2021-09-12 15:50:00
0 0
淹没在云际

把简单题目想复杂了

发表于 2021-09-12 09:15:00
0 0
拾柒

懂了懂了

发表于 2021-09-08 20:20:00
0 0