死锁产生的原因及如何避免死锁

死锁:

1.概念: 多个并发进程 因争夺(互斥)资源 而产生 相互等待 的现象。

2.产生死锁的本质原因:
1)资源有限;(如:2人抢夺一个苹果)
2)进程推进顺序不合理。(如:2人抢夺一个苹果,
都看到对方拿到了,都在等待,谁也没有拿到)

3.产生死锁的必要条件:

1)资源互斥。(只能同时被一个线程访问)
2)资源占有并等待,指一个进程必须占有至少一个资源,同时又等待另一资源,而该资源已被其它进程占有。
3)不能抢占资源。
4)循环等待。存在等待进程集合{P0,P1,P2,···,Pn},其中的P0正在等待一个P1占用的资源;

P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。(包含条件2)

3.死锁避免

通过动态的资源分配状态 以及 合理的资源分配算法 以确保 循环等待的条件不会成立,从而避免死锁。
安全状态:针对当前状态,即下面四个条件,如果能够按照某个次序调度资源使得每个进程都能够运行完毕,则称此状态是安全状态。
四个条件:现有各类资源的数目,已分配的资源数目,可用的各类资源数,每个进程对各类资源的最大需求数。

5.死锁恢复(回收资源)

一是终止进程,包括终止环中的进程(即死锁进程)和终止环外进程(牺牲品)(目的是释放资源)。
二是抢占资源,被抢占资源的进程要利用回滚恢复,一般回滚到一个安全状态。通常是完全回滚,即终止进程并重启进程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值