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

  • 相关阅读:
    只用一个字节 计算象棋将帅之间可能的位置
    后缀数组学习
    java 构造不可变类集的使用方法
    topcoder SRM 639 div2
    navicat和pymysql
    表查询
    表的关系对应
    MySQl数据类型和条件限制
    复习之网络编程
    协程
  • 原文地址:https://www.cnblogs.com/immjc/p/9109708.html
Copyright © 2011-2022 走看看