zoukankan      html  css  js  c++  java
  • 死锁

          死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程(线程)在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。

    产生死锁的四个必要条件

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

    死锁的预防

          因为独占资源必须以互斥方式进行访问,所以要预防死锁只能从破坏后三个条件下手了。最简单的消除死锁的办法是重启系统。更好的办法是终止一个进程的运行。同样也可以把一个或多个进程回滚到先前的某个状态。如果一个进程被多次回滚,迟迟不能占用必需的系统资源,可能会导致进程饥饿。

    1.破坏请求并保持条件
          要破坏这个条件,就要求每个进程必须一次性的请求它们所需要的所有资源,若无法全部获取就等待,直到满足为止,也可以采用事务机制,确保可以回滚,即把获取、释放资源做成原子性的。这个方法实现起来可能会比较困难,因为某些情况下,进程并不能事先直到自己需要哪些资源,也有时候并不需要分配到所有资源就可以运行。
    2.破坏不可剥夺条件
          一个已占有资源的进程若要再申请新的资源,它必须先释放已占有的资源。若随后再需要这些资源,需要重新申请

    3.破坏循环等待条件

  • 相关阅读:
    数据绑定表达式语法(Eval,Bind区别)
    使用博客园的第一件事 自定义主题
    sql2000 跨服务器复制表数据
    使用UpdatePanel 局部刷新出现中文乱码的解决方法!!
    MMC不能打开文件MSC文件
    sql 日期 、时间相关
    loaded AS2 swf call function in AS3 holder
    Rewrite the master page form action attribute in asp.net 2.0
    100万个不重复的8位的随机数
    flash 中实现斜切变型
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/3603073.html
Copyright © 2011-2022 走看看