操作系统:死锁

死锁

1 死锁的定义

到底什么是死锁?(下面是从《操作系统概念》所摘录的)

在多道程序环境中,多个进程可以竞争有限数量的资源。当一个进程申请资源时,如果这时没有可用资源,那么这个进程进入等待状态。有时,如果所申请的资源被其他等待进程占有,那么该等待进程有可能再也无法改变状态。这种状态称为死锁

说实际一点就是,当一组进程内的每个进程都在等待一个事件,而这一个事件只能由这一组进程的另一个进程所引起,那么这组进程就处于死锁状态。

作为一个开发人员,死锁的避免对我们来说相当重要,应该特别注意如何获得和释放锁

2 死锁的特征

当死锁时,进程永远不能完成,系统资源被阻塞使用,以致于阻止了其他作业开始执行。下面是产生死锁的必要条件,如果在一个系统中以下四个条件同时成立,那么就可能引起死锁:

  1. 互斥:至少有一个资源必须处于非共享模式,即一次只能够一个进程可以使用,如果另一进程申请该资源,那么申请进程应该等到该资源释放为止。
  2. 占有并等待:一个进程应占有至少一个资源,并等待另一个资源,而该资源为其他进程所占有。
  3. 非抢占:资源不可以抢占,即资源只能被进程在完成任务后自愿释放。
  4. 循环等待:有一组等待进程『a,b,c,d,e,f』,a等待的资源为b所占有,b等待的资源为c所占有,c等待的资源为d所占有…一直循环下去。

以上四个条件必须全部满足才会死锁!!!!!!

3 死锁的处理方法

一般来说,处理死锁问题有三种方法:

  • 通过协议来预防或避免死锁,确保系统不会进入死锁状态
  • 可以允许系统进入死锁状态,然后检测它,修复它
  • 可以忽视这个问题,认为死锁不可能在系统内发生。

第三个方法为大多数操作系统所采用,所以应用程序开发人员需要自己编写程序,以便处理死锁。
为了确保不会发生死锁,系统可以采用死锁预防死锁避免方案。死锁预防方法确保至少有一个必要条件不成立。死锁避免要求操作系统事先得到有关进程申请资源和使用资源的额外信息。

3.1 死锁预防

确保至少一个必要条件不成立,就能预防死锁发生。

  • 破坏互斥条件
  • 破坏占有和等待条件
  • 破坏不可抢占条件
  • 破坏环路等待

3.2 死锁避免

银行家算法介绍及实现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值