zoukankan      html  css  js  c++  java
  • 死锁及死锁的四个必要条件、预防死锁、解除死锁

    死锁是多个线程在运行过程中互相竞争资源发生的僵局,若无外力作用,它们都无法推进下去。死亡如风,常伴吾身。窝窝头,嘿嘿!

    死锁的四个必要条件

    1. 互斥条件:一个资源每次只能被一个进程使用。
    2. 请求和保持条件:一个进程因为请求资源而阻塞时,对已获得的资源保持不放。
    3. 不剥夺条件:进程已经获得的资源在没有使用完之前,不能强行剥夺。
    4. 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

    解决死锁的基本方法

    预防死锁:

    1)资源一次性分配:一次性分配所有资源,这样就不会有请求了(破坏请求条件)

    2)只要有一个资源得不到分配,就不给这也进程分配其他的资源(破坏保持条件)

    3)可剥夺资源:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源(破坏不剥夺条件)

    4)资源有序分配法:系统给每个资源赋予一个编号,每一个进程按照编程递增的顺序请求资源,释放则相反(破坏环路等待条件)

    解除死锁:

    常用的有:

    1)剥夺资源:从其他进程剥夺足够数量的资源给死锁进程,以解除死锁状态;

    2)撤销进程:可以直接撤销死锁进程或撤销代价最小的进程,直至有足够的资源可用;

    预防死锁

  • 相关阅读:
    Python操作SQLServer示例
    T-SQL 谓词和运算符
    T-SQL 语句—— 游标
    SQL中的循环、for循环、游标
    web自动化快速入门
    接口自动化的总结
    jenkins知识
    SVN知识
    random.sample函数
    项目实战(六)
  • 原文地址:https://www.cnblogs.com/lhh666/p/11545460.html
Copyright © 2011-2022 走看看