zoukankan      html  css  js  c++  java
  • 死锁问题

    死锁的概念

      所谓死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,

    它们都将无法推进下去,此时称系统处于死锁状态或系统产生了死锁。

    死锁产生的四个必要条件

    互斥条件:一个资源每次只能被一个进程使用;若其他进程申请使用该资源,必须等到该资源被释放为止;

    请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放;

    不可剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺;

    循环等待条件:若干进程之间形成一种头尾相接的环形等待资源关系;

    破坏死锁。

    互斥条件不可以破坏。

    打破请求与保持条件:

    可以实行资源预分配策略(进程在运行前一次性向系统申请它所需要的全部资源,若所需全部资源得不到满足,则不分配任何资源,此进程暂不运行),或者

    只允许进程在没有占用资源时才可以申请资源。(一个进程可申请一些资源并使用它们,但是在当前进程申请更多资源之前,它必须全部释放当前所占有的资源)

    打破不可剥夺条件

    允许进程可以强制剥夺资源,从而破坏不可剥夺条件。

    死锁避免的基本思想 
      死锁避免的基本思想是动态地检测资源分配状态,以确保循环等待条件不成立,从而确保系统处于安全状态。所谓安全状态是指:如果系统能按某个顺序为每个进程分配资源(不超过其最大值),那么系统状态是安全的,换句话说就是,如果存在一个安全序列,那么系统处于安全状态。资源分配图算法和银行家算法是两种经典的死锁避免的算法,其可以确保系统始终处于安全状态。

    注意银行家算法:

      该算法需要检查申请者对资源的最大需求量,如果系统现存的各类资源可以满足申请者的请求,就满足申请者的请求。这样申请者就可以很快完成其计算,然后释放它占用的资源,从而保证了系统中所有进程都能完成,所以可避免死锁的发生。

  • 相关阅读:
    数字配对(bzoj 4514)
    任务查询系统(bzoj 3932)
    楼房重建(bzoj 2957)
    Hotel(poj 3667)
    Can you answer these queries(spoj 1043)
    亚瑟王(bzoj 4008)
    潘多拉的盒子(bzoj 1194)
    Circling Round Treasures(codeforces 375c)
    莫队算法---基础知识介绍(转载)
    HDU 1141---Brackets Sequence(区间DP)
  • 原文地址:https://www.cnblogs.com/topass123/p/12752920.html
Copyright © 2011-2022 走看看