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


      以下四点是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必定死锁。我觉得是不一定。

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

  • 相关阅读:
    大数据架构设计模式主要考虑八方面问题
    机器学习__04__朴素贝叶斯算法
    电商数仓笔记1(数据仓库概念,项目需求及架构设计,数据生成模块)
    为什么要使用MVP架构
    大数据学习1.3-xShell配置jdk
    【目录】前端开发(JavaScript、Vue)
    基于Echarts实现可视化数据大屏大数据图表样式
    ElasticSearch - () Python操作es
    职业规划,什么是职业兴趣 - 我喜欢做什么?
    C/C++数据结构——挖沟(Kruskal算法+并查集)
  • 原文地址:https://blog.csdn.net/weixin_74059671/article/details/133376959