zoukankan      html  css  js  c++  java
  • [operating System] 死锁

    1. 死锁的定义

    死锁是指多个进程在竞争某一资源而陷入相互等待的僵局,若无外力作用,这些进程将无法推进

    2. 死锁产出的原因

    1. 对不可剥夺资源的竞争

    2. 进程推进的顺序非法(相互等待资源)

    3. 死锁产生的必要条件

    1. 互斥:进程某一段时间拥有的资源只能由一个进程占有,其他进程请求该资源则需要等待

    2. 不可剥夺:进程拥有资源只能由该进程自己释放,其他进程不能抢占资源

    3. 请求和等待:当前进程拥有资源的情况下请求下一个资源,在得到下一个资源时不放弃自己已经拥有的资源

    4. 循环等待:进程间存在循环等待资源链。每个进程请求的资源正是下一个进程所占有的资源

    4. 避免死锁

    1. 按照顺序进行加锁

    2. 请求锁的同时设置一个计时器,如果计时器超时,则放弃当前请求并释放已经拥有的所有锁

    3. 死锁检测:将进程已经获得的锁和正在请求的锁放在一个数据结构中,(进程-锁)。

      3.1 当发生死锁时遍历该数据结构,找到死锁进程对其进行超时重试等方法解决死锁。

      3.2 还可以对进程设置随机优先级,优先级较高者进行锁回退。释放所有锁并满足其他进程的资源需求。

  • 相关阅读:
    积性函数前缀和
    CF1067D Computer Game
    Atcoder Tenka1 Programmer Contest 2019 题解
    Codeforces Round #549 (Div. 1) 题解
    SHOI2019旅游记
    CF871D Paths
    CF1065E Side Transmutations
    停更公告
    博客说明
    SCOI2019酱油记
  • 原文地址:https://www.cnblogs.com/immjc/p/9109708.html
Copyright © 2011-2022 走看看