• 分析几道关于死锁的真题


      以下四点是408中死锁这一节的内容,考频基本上为每年一道题,虽然一半以上的题目是关于银行家算法的不安全序列的送分题,但其中有几道题综合了这以下几个概念,如果现在不提前分析这几个概念之间的关系的话。可能考场上就是随便蒙一个了。

    1. 死锁的概念
    2. 死锁预防
    3. 死锁避免
    4. 死锁的检测和接触

     

    2015年真题

    死锁产生的四个必要条件是:互斥资源;不可剥夺;请求并保持;循环等待链。只要破坏了死锁产生的必要条件之一,死锁就一定不会发生,这又称死锁预防。记忆口诀为,预防吃播病殉。

    题中S1会限制用户申请资源的顺序,这是破坏了循环等待链,属于死锁预防,而题干说的是死锁避免,所以第一条肯定不对。

    第二条说死锁避免需要资源总量信息,没问题,这是银行家算法需要的。死锁检测和解除不会管你怎么分配资源,而是提供检测和解除的手段,所以第三条也对。但是按理说资源分配图是需要知道进程需要申请多少资源的,你不知道进程要多少资源你怎么检测?不过这道题把第一条排除后只能选B。

                                                                     2016年真题

     

    这道题太牛B了,首先P4进程只需要一个资源,它不满足请求和保持条件,所以不参与死锁,排除D选项,然后就不用讨论P4了,这是这道题做出来的关键。然后循环等待条件死锁至少是要有2个进程的,排除A选项。

    剩下的可以穷举了:

    P1占R1,P2占R3,P3又不需要R2,此时不死锁。P1占R1,P2占R2,P3必须占R3才能死锁,三个死锁。

    P1占R2,P2占R3,P3占R1,三个死锁。

    P1啥都不占,P2,P3不会死锁。

    只能选C了。

                                                               课后一道概念题 

     

    选项B抖动先排除了。

    死锁的一个必要条件是不可剥夺,而题目说了剥夺其他已经阻塞了的进程的资源给一个进程,那么肯定不会发生死锁了,排除A选项。

    而回退是死锁解除的方法,前提是已经发生死锁了,排除C选项。

    只能选D。不是我想选,被逼的我不得不选。

                                                                       课后题

    也是死锁的检测和预防里综合了死锁预防的内容,四个必要条件。 

    C选项我个人不太同意,答案说的是C必定死锁。我觉得是不一定。

    除非这个图不是资源分配图,或者没有环,这显然有环,因为它没有拓扑排序序列。从环的定义来看:第一个顶点和最后一个顶点相同的路径称为回路或环,也没问题。不过考试的时候我会按答案的那种做法,上面这个图应该不属于题目中的那种情况,但是不知道为什么不属于。

  • 相关阅读:
    华为云云耀云服务器L实例评测|手把手教你搭建MySQL数据库
    如何在一个pycharm项目中创建jupyter notebook文件,并切换到conda环境中
    [Spring] Bean生命周期
    30.3.2 使用GRANT语句为用户授权
    前端面试题2022-HTML篇
    linux内存页回收
    QT调用onnx 模型Demo(代码和讲解)
    kubeadm 安装k8s
    探索ClickHouse——连接Kafka和Clickhouse
    【简单介绍下机器学习之sklearn基础】
  • 原文地址:https://blog.csdn.net/weixin_74059671/article/details/133376959