操作系统-死锁

1:死锁

引起死锁的原因:

  1. 竞争非抢占资源
  2. 竞争可消耗资源
  3. 进程推进顺序不当

死锁: 多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程将永远不会向前推进。

死锁产生的必要条件:

  1. 互斥条件—进程对所分配的资源进行排它性使用
  2. 请求和保持条件—请求新资源阻塞,保持已获得资源不放
  3. 不可抢占条件—进程获得的资源在使用完之前不可被抢占
  4. 循环等待条件—存在进程-资源环形链

如何处理死锁:

  1. 预防死锁:破坏请求保持,不可抢占,循环等待条件
  2. 避免死锁:资源分配过程中,防止系统进入不安全状态
  3. 检测死锁:设置检测机构,及时检测死锁的发生
  4. 解除死锁:将进程从死锁的状态下解脱出来

2:预防,检测,解除死锁

预防死锁:

  1. 破坏请求保持—资源调度时,若资源全部满足则调度,否则不调度
  2. 破坏不可抢占—进程申请资源而不得时,需要放弃已获取资源

检测死锁:

资源分配图: 化简完全为孤立点则无死锁

  1. 结点N(进程结点P,资源结点R)
  2. 边E(请求资源边P-R,分配资源边R-P)

解除死锁:

  1. 抢占资源:从被挂起的进程哪里抢占资源
  2. 终止进程:强制从系统中撤销一个或者多个死锁进程

3:避免死锁

系统安全状态:存在安全态和不安全态
安全状态:系统能按照某种进程顺序,来为每一个进程Pi分配所需资源。直到满足每个进程对资源的最大需求,使得每个进程可以顺利的完成。如果无法找到这样的安全序列,则代表系统处于不安全状态。
避免死锁:
在资源动态分配的过程中,防止系统进入不安全状态,系统进行资源分配前,应计算此次资源分配的安全性,若不安全则不分配,让该进程等待。若安全则会为进程分配资源。

安全性算法:

  1. 工作向量:Work[m]:系统可供进程继续运行所需的各类资源数 Work初值=Available
  2. Finish[n]:表示系统是否有足够的资源分配给进程,使之运行完毕。false-true

安全检测流程:
在这里插入图片描述
银行家算法避免死锁:

系统中有n个进程m种资源

  1. Available[m]:可利用资源向量----->Available[j]=k代表当前系统中有j类资源k个。初值为系统中该类资源总数。
  2. Max[n][m:最大需求矩阵
  3. Allocation[n][m:分配矩阵
  4. Need[n][m:需求矩阵----->Need=Max-Allocation

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值