操作系统---(25)死锁的发生与描述

回顾:哲学家就餐问题

在这里插入图片描述
在这里插入图片描述

什么是死锁

一组相互竞争系统资源或进行通信的进程间的永久阻塞

现象:

  1. 每个进程获得了一部分资源, 又申请另外的资源, 得不到而转入阻塞
  2. 若无外力作用,这些进程会-一直阻塞下去。

一种死锁状态的例子
此时:
P2又申请1个R2,阻塞
P1又申请1个R1,阻塞
结果:
P1和P2陷入死锁
在这里插入图片描述

死锁的危害

  1. 陷入死锁圈的进程无限期阻塞等待
  2. 陷入死锁圈的资源被浪费
  3. 更多进程卷入死锁
  4. 甚至系统死机
    因此,操作系统必须采取措施处理死锁

分析—产生死锁的原因

  1. 动态资源分配策略
  2. 资源可用数量少于需求数量
  3. 进程并发过程的偶然因素
    因有偶然性,所以无法给出死锁产生的充分条件

产生死锁的4个必要条件
(1)互斥条件
进程请求的资源属于临界资源,每一瞬间只能由一个进程使用,其它申请该资源的进程等待。
(2)不可剥夺条件
进程获得某资源后,便一直占有它,直到用完为止才可以释放,其它进程不可以剥夺。
(3)请求和保持条件
允许一个进程在保持已有资源不放弃的情况下,进一步请求新资源,被阻塞时也不会释放已占有的资。
(4)环路等待条件
一组进程{l…,Pn}的占有资源情况 与请求资源情况构成了一个环型链,比如P1等待P2的资源,P2等待P3的资源…等待P1的资源。

死锁状态的描述(1)----资源请求分配图

在这里插入图片描述
在这里插入图片描述
(1) 有死锁,图中一定有环
(2) 图中有环,不一定有死锁发生

死锁状态的描述(2)----资源请求分配矩阵

  1. 若n个进程、m类资源,则首先设置三个nX m的二维矩阵
    • 需求总量矩阵Max[ ] [ ]
    • 资源占有矩阵Allocation[ ][ ]
    • 尚需矩阵Need[ ][ ]
      如: Need[i] [j]=k,表示进程i尚需第谈资源的数量为k个。
  2. 另设几个一维数组
    • 资源总量数组Total[ ]
    • 可用(剩余)资源数组Available[ ]
    • 申请资源数组Request[ ]

例如:Total=(10,5,7)
在这里插入图片描述

面对死锁

  1. 死锁是进程并发过程中可能发生的问题
  2. 死锁有危害,轻则死锁进程死住,重则系统死机
  3. 操作系统必须面对并解决死锁问题

死锁的解决办法

  1. 事前处理:针对性采取措施,让死锁没有机会发生
  2. 事后处理:及时检测,及时解除

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值