五 操作系统基础之死锁

死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力,这些进程都将无法向前推进。

死锁产生的必要条件

死锁产生必须同时满足下面四个条件:

  1. 互斥条件:在某一时间段内某资源仅为一个进程占有。
  2. 不可剥夺条件:进程所获资源在未使用完之前不能被其他进程强行夺走。
  3. 请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求。
  4. 循环等待条件:存在一种进程资源的循环等待链。(资源分配图含圈而系统又不一定有死锁的原因是同类资源数大于1)

死锁处理策略

1 预防死锁

效率低,进程初始化时间长

  • 破坏互斥条件
  • 破坏不剥夺条件
  • 破坏请求和保持条件(静态资源分配法:进程在运行亲一次申请完它所需要的全部资源)
  • 破坏循环等待条件(顺序资源分配法:给系统中资源编号,必须按编号递增顺序请求资源,同类资源一次申请完)

2 避免死锁

必须知道将来的资源需求

  • 系统安全状态:存在一个安全序列使每个进程都可以顺序完成。(安全状态一定能避免死锁,不安全状态不一定是死锁状态,可能进入死锁状态。)
  • 银行家算法

当request<need&&request<available时尝试分配,用安全性算法检测是否存在安全序列。

3 死锁的检测及解除

通过剥夺解除死锁,造成损失

  • 资源分配图

圆圈代表进程,方框代表资源集,方框内是资源数。由进程指向资源的箭头代表申请一个资源,由资源指向进程的箭头代表已经分配一个资源。

  • 死锁定理

死锁:资源分配图是不可完全化简的。

  • 死锁解除
  1. 资源剥夺法
  2. 撤销进程法
  3. 进程回退法

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值