死锁的相关知识

1. 什么是死锁:
死锁是指两个或两个以上的进程在执行的过程中,因为争夺资源而造成的一种相互等待的现象,若无外力作用,他们将无法推进下去,此时成系统处于死锁状态或系统产生了死锁。
2.死锁的原理:
指的是一组线程被阻塞了,等待一个永远不会为真的条件,是一组相互竞争资源或进行通信的进程间的永久阻塞
3.死锁产生的四个必要条件

  • 互斥条件:一次只有一个进程(线程)可以访问该资源,当其他进程(线程)要访问该资源时,其他进程(线程)只能等待。

  • 请求和保持条件:当一个线程等待其他线程时,仍然保持占用已经拥有的资源

  • 不剥夺条件:不抢占进程已经拥有的资源。

  • 环路等待条件:每个进程都占有下一个进程想要的资源,形成一个环形等待。
    这里写图片描述
    4.死锁的处理方式

  • 预防死锁:

    1. 破坏互斥条件:不容易破除
    2. 破坏不抢占条件:使进程可以抢占其他进程已经拥有的资源,但是这种只能是资源状态可以很容易保存和恢复的前提下才是实用的。
    3. 资源的一次性分配:为了处理请求和保持条件,可以要求进程一次性请求所有需要的资源,并且阻塞这个进程直到所有请求同时满足。但是存在三个问题:
      ① 一个进程可能被阻塞很长时间以等待所有资源,但此进程可能只需要一部分资源就可以运行。
      ② 分配给一个进程的资源可能有很长一段时间没有被使用,在此期间,也不会被其他进程使用。
      ③ 一个进程可能事先不知道他所需要的全部资源

      4.资源的有序分配:为了处理环路等待问题。

  • 避免死锁:
    死锁的预防通过破除必要条件来使死锁一定不会发生。而死锁的预防则是允许四个必要条件的发生,但是通过一些措施使得条件不会从必要条件转为充分条件。打个比方,如果死锁是地雷并且埋在一个区域的话,死锁预防是压根就不进入雷区,而死锁避免是从雷区中找到一条安全道路。即每一步都要确保处于安全状态,安全状态是指系统能按某个顺序为每个进程分配资源(不超过其最大值)并能避免死锁,那么系统状态就是安全的。即如果存在一个安全序列,那么系统处于安全状态。如果没有这样的顺序存在,那么系统处于不安全状态。而死锁避免就是要通过一些方法找到这样一个安全序列,使系统不会发生死锁。
    避免死锁的两个方法:

    1)如果一个进程的请求会导致死锁,则不启动此进程。

    2)如果一个进程增加的资源请求会导致死锁,则不允许此分配。

  • 检测死锁
    首先为每个进程和每个资源指定一个唯一的号码;
    然后建立资源分配表和进程等待表

写的比较浅,后边可能会继续深入。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值