死锁

作者: RedHatMe | 来源:发表于2018-08-29 23:06 被阅读0次

    概念:

    死锁并不是锁,而是进程对资源占用的一种表达方式。
    最简单的解释是,
    A进程 占了资源a ,B进程占了资源b,
    A需要b资源才可以释放a
    B需要a资源才可以释放b
    这样 就循环等待了,互不释放。

    死锁预防:

    1. 当某进程新的资源未满足时,释放已占有的资源,即资源占用的单一性,不准一个进程同时占两个资源。
    2. 资源编号分配。即系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反

    死锁避免:

    系统在进行资源分配之前预先计算资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程;否则,进程等待。其中最具有代表性的避免死锁算法是银行家算法。

    死锁检测:

    为每个进程和每个资源指定一个唯一的号码;然后建立资源分配表和进程等待表
    之后单独运行检测算法。检测是否死锁。

    死锁解决:

    1. 直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态消除为止。
    2. 挂起占用资源的进程。
      即当发现死锁时,挂起一些进程,使得处于死锁之中的其它进程,可抢占被占用的资源从而继续执行。待以后条件满足后,再恢复被挂起的进程。常利用资源分配图、进程等待图来协助这种检测。

    以上方式的优劣

      1. 最有效的是死锁避免和死锁检测配合使用。
      2. 死锁预防 其实就是不产生死锁,会产生很大性能损耗。
      3. 死锁检测 是完全不预防死锁,后续如果产生大量死锁,会有大批量杀进程或者挂进程的情况。
    

    相关文章

      网友评论

          本文标题:死锁

          本文链接:https://www.haomeiwen.com/subject/wqdlwftx.html