zoukankan      html  css  js  c++  java
  • 操作系统简要总结之死锁

    死锁的概念

      死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺互斥资源而造成的一种互相等待的现象

    死锁产生的原因

      -----竞争资源引起的资源分配不当

      -----进程推进顺序不合理

    产生死锁的四个必要条件

      -----互斥条件:一个资源每次只能被一个进程(线程)使用。

      -----不可剥夺条件:一个进程(线程)对已获得的资源在未使用完毕之前,不能被其他进程强行剥夺,而只能又该进程自愿释放。

      -----请求保持条件条件: 进程(线程)每次申请它所需要的一部分资源,在申请新资源的同时继续占用已分配的资源。

      -----循坏等待条件: 多个进程(线程)之间形成一种头尾相接的循环等待资源关系,即前一个进程占有后一个进程所请求的资源。

    注:这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之 一不满足,就不会发生死锁。

    解决死锁的方法

      -----预防死锁(破坏产生死锁的条件)

      -----避免死锁(银行家算法)

      -----检测死锁(资源分配图)

      -----解除死锁

    注:第三条与第四条一般联合使用

    预防死锁的策略

      -----破坏互斥条件(SPOOLing)

      ----- 允许剥夺其他进程的资源(破坏不可剥夺条件)

      -----一次性分配所有的资源(破坏请求与保持条件

      -----有序分配资源(破坏请求与保持条件

    检测死锁的策略

      资源分配图

    解除死锁的策略

    -----撤销进程

          -----撤消陷于死锁的全部进程

      -----逐个撤消陷于死锁的进程,直到死锁不存在

    -----剥夺资源

      -----将陷于死锁的进程所占用的资源逐个强迫放弃,直至死锁消失

      -----从另外一些进程那里强行剥夺足够数量的资源分配给死锁进程,以解除死锁状态

    与死锁相关的概念

         -----活锁:活锁不会被阻塞,而是不停检测一个永远不可能为真的条件。除去进程本身持有的资源外,活锁状态的进程会持续耗费宝贵的CPU时间。

                     避免活锁的简单方法是采用先来先服务的策略

      -----饥饿:由于优先级别低而无法得到执行。

  • 相关阅读:
    20155209林虹宇虚拟机的安装及一点Linux的学习
    预备作业2林虹宇20155209
    预备作业01:你期望的师生关系是什么?
    20155203
    我眼中的师生关系以及对于专业学习的展望
    20155319的第一次随笔
    20155336 2016-2017-2《JAVA程序设计》第二周学习总结
    20155336 2016-2017-2《JAVA程序设计》第一周学习总结
    虎光元的第三次随笔
    20155336虎光元
  • 原文地址:https://www.cnblogs.com/changyaohua/p/4642526.html
Copyright © 2011-2022 走看看