Day19_java运算符_死锁

每日一题

题目
请解释死锁(Deadlock)的概念及其产生的必要条件,并说明常见的死锁处理策略及其优缺点。


问题分析

此问题考察对操作系统资源管理机制的理解,需深入分析死锁的成因、判定条件及解决方法。回答时需结合理论模型与实际策略,体现系统性思维。


参考答案

1. 死锁的定义

死锁指多个进程因竞争资源而陷入互相等待的僵局,若无外力干预,这些进程将无法继续推进。例如:

  • 进程A持有资源1并请求资源2,进程B持有资源2并请求资源1,双方均不释放已有资源,导致无限等待。

2. 死锁的四个必要条件

条件 说明 破坏方法示例
互斥访问 资源一次只能被一个进程独占使用(如打印机) 使用共享资源(如只读文件)
持有并等待 进程持有资源的同时请求其他资源 要求进程一次性申请所有资源(预分配)
不可剥夺 资源只能由持有者主动释放,不可强制收回 允许操作系统剥夺资源(如内存回收)
循环等待 存在进程资源的环形等待链(A→B→A) 强制按顺序申请资源(如资源排序法)

3. 死锁处理策略对比

策略 核心思想 优点 缺点
预防 破坏死锁的任一必要条件 完全避免死锁 资源利用率低(如预分配导致浪费)
避免 动态检查资源分配是否安全(银行家算法) 提高资源利用率 需预知最大资源需求,计算开销大
检测与恢复 定期检测死锁并解除(终止进程/回滚) 灵活,无运行时限制 检测算法复杂,恢复可能造成数据不一致
鸵鸟策略 忽略死锁(假设极少发生) 实现简单,适合特定场景 不适用于关键系统(如航天控制)

4. 典型应用场景

  • 预防策略:嵌入式实时系统(如汽车控制系统),需绝对避免死锁。
  • 银行家算法:云计算资源调度(动态分配虚拟机资源)。
  • 检测与恢复:数据库管理系统(通过事务回滚解决死锁)。
  • 鸵鸟策略:PC端单用户系统(如Windows早期版本)。

5. 深入扩展

  • 活锁(Livelock):进程不断改变状态但无法推进(如两人相让路),需引入随机退避机制。
  • 资源分配图(RAG):通过图论模型检测死锁,若图中存在环路且资源不可抢占,则判定死锁。
  • 分布式死锁:跨节点死锁检测需Chandy-Misra算法等,复杂度显著增加。

参考题目延伸

  • 编程题:如何用代码模拟死锁场景?(可要求写两个线程互相等待锁的Java/Python示例)
  • 设计题:若设计一个无人机编队控制系统,你会选择哪种死锁处理策略?为什么?

Java

package com.xiang.operator;

public class Demo07 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 30;

        a += b; // a = a + b
        a -= b; // a = a - b

        System.out.println(a);

        // 字符串连接符   +
        System.out.println(a+b);
        System.out.println(""+a+b); // 1020 字符串在前会转换为字符串
        System.out.println(a+b+""); // 30 字符串在后则仍为数字
        System.out.println(a+c+""+b+c); // 402030
    }
}

package com.xiang.operator;

public class Demo04 {
    public static void main(String[] args) {
        // ++   --  自增  自减  一元运算符
        int a = 3;

        int b = a++;    // a先赋值,再自增
        // a = a + 1;
        System.out.println(a);
        // a = a + 1;
        int c = ++a;    // a先自增,再赋值

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

        // 幂运算 2*2*2 = 8    很多运算会使用工作类来写
        double pow = Math.pow(3,2);
        System.out.println(pow);
    }
}

百词斩

posted @ 2025-03-21 00:41  Pikature  阅读(34)  评论(0)    收藏  举报