精华内容
下载资源
问答
  • 2018-11-28 21:48:19

    1.关于不安全状态与死锁状态的不同之处:
      1>:正如申老师所言,当进程处于不安全状态的时候,可能会由于操作系统在期间杀死一些进程等意外情况下而使不安全状态避免向死锁状态的转化。
      2>:在我看来,1中的思想可能有点牵强,毕竟在大多数情况下进程都是可以正常结束的,而且书中银行家算法也是在所有的进程正常运行对前提上进行操作的。书中产生死锁的四个必要条件之不可抢占条件中写到。进程已获得的资源在进程未使用完之前不可被抢占,只能在进程使用完时由自己释放。注意:在这里是说进程使用完时自己释放,并不是进程结束时释放。所以,当进程组处于不安全状态时,是指找不到这样的一个安全序列,使得进程能按某种推进顺序,为每一个进程分配其所需资源,直至满足每一个进程对资源的最大需求,使得每一个进程都可以顺利完成。我们需要注意的是,这种假设是在这一刻完成的,即在推进过程的这一刻,进程必须满足它所需要的所有资源,而且也只有进程结束之后才将其所拥有的所有资源释放,我想这也是书中为什么说是“满足其最大需求”。实际上,可能在程序运行的过程中,在其下次申请资源之前,就可能释放其所拥有的部分资源,从而使系统处于安全状态,只有在最坏条件下(所有的进程都霸占其此时所拥有的资源并且去申请新的资源)才能导致死锁。

    更多相关内容
  • 图6-9a的状态是安全的,这是由于存在一个分配序列使得所有的进程都能完成。也就是说,这个方案可以单独地运行B,直到它请求并获得另外两个资源实例,从而到达图6-9b的状态。当B完成后,就到达了图6-9c的状态。然后...

    在图6-9a中有一个A拥有3个资源实例但最终可能会需要9个资源实例的状态。B当前拥有2个资源实例,将来共需要4个资源实例。同样,C拥有2个资源实例,还需要另外5个资源实例。总共有10个资源实例,其中有7个资源已经分配,还有3个资源是空闲的。
    在这里插入图片描述
    图 6-9a

    图6-9a的状态是安全的,这是由于存在一个分配序列使得所有的进程都能完成。也就是说,这个方案可以单独地运行B,直到它请求并获得另外两个资源实例,从而到达图6-9b的状态。当B完成后,就到达了图6-9c的状态。然后调度程序可以运行C,再到达图6-9d的状态。当C完成后,到达了图6-9e的状态。现在A可以获得它所需要的6个资源实例,并且完成。这样系统通过仔细的调度,就能够避免死锁,所以图6-9a的状态是安全的。
    现在假设初始状态如图6-10a所示。但这次A请求并得到另一个资源,如图6-10b所示。我们还能找到一个序列来完成所有工作吗?我们来试一试。调度程序可以运行B,直到B获得所需资源,如图6-10c所示。
    最终,进程B完成,状态如图6-10d所示,此时进入困境了。只有4个资源实例空闲,并所有活动进程都需要5个资源实例。任何分配资源实例的序列都无法保证工作的完成。于是,从图6-10a到图6-10b的分配方案,从安全状态进入到了不安全状态。从图6-10c的状态出发运行进程A或C也都不行。回过头来再看,A的请求不应该满足。
    值得注意的是,不安全状态并不是死锁。从图6-10b出发,系统能运行一段时间。实际上,甚至有一个进程能够完成。而且,在A请求其他资源实例前,A可能先释放一个资源实例,这就可以让C先完成,从而避免了死锁。因而,安全状态和不安全状态的区别是:从安全状态出发,系统能够保证所有进程都能完成;而从不安全状态出发,就没有这样的保证。
    在这里插入图片描述

    展开全文
  • 操作系统中不安全状态为何并非一定转为死锁

    万次阅读 多人点赞 2020-01-31 12:26:41
    在学习避免死锁、银行家算法时,对于安全状态一定不会产生死锁,不安全状态也并非必然转为死锁,不止你是否会疑惑为何处于不安全状态下,不是必然会发生死锁

    ​ 这个问题出自与避免死锁中的安全状态和非安全状态,在讨论之前,先来解释下安全状态和非安全状态。

    1.系统安全状态

    ​ 所谓安全状态,是指系统能够按某种进程推进顺序(P1,P2,…,Pn)为每个进程分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利的执行完成。其中进程的推进顺序(P1,P2,…,Pn)被称为安全序列。如果系统中能找到这样一个安全序列,则称系统处于安全状态。

    ​ 如果系统中无法找到一个安全序列,则称系统处于不安全状态

    ​ 我们通过一个例子来说明安全性。假定系统中有三个进程P1、P2和P3,共有12台磁带机。进程P1总共要求10台磁带机,P2和P3分别要求4台和9台。假设在T0时刻,进程P1、P2和P3已分别获得5台、2台和2台磁带机,尚有3台空闲未分配,如下表所示:

    资源分配图

    ​ 对于上题,我们可以知道T0时刻系统是安全的,因为这是存在一个安全序列(P2,P1,P3)。

    ​ 如果不按照安全序列分配资源,则系统可能会有安全状态进入不安全状态。例如在T0时刻后T1时刻,P3又请求一台磁带机,如果此时分配资源给进程P3,此时的资源分配如下表所示:

    资源分配图

    ​ 我们可以看到,在T1时刻,无法找到一个安全序列,因此在T1时刻系统处于不安全状态。

    2.不安全状态和死锁的关系

    ​ 由上述描述,我们可以得出一个结论,只要系统处于安全状态,系统便不会进入死锁状态;但是另一句话:当系统处于不安全状态时,并非所有不安全状态都必然转换为死锁,就有点懵了。

    安全状态与不安全状态图

    ​ 对于系统处于不安全状态,为什么不是一定会转为死锁状态?按照死锁的发生的四个必要条件:互斥条件、请求和保持条件、不可抢占条件、循环等待条件,只要其中的一个条件不满足就不会发生死锁,这也是预防死锁的理论依据。如果系统中已经设置了预防死锁的策略,那么死锁就不会产生,也就不需要避免死锁算法了,因此,设置了避免死锁策略(或者说是银行家算法)的OS,应当不会破坏四个必要条件中的任一个,这样所施加的限制条件较弱,以期望获得更好的系统性能。

    ​ 由上面的描述,我就在想,如果系统处于安全状态,因为临界资源的不可抢占性,高优先级进程也无法剥夺已经分配出去的进程,那么系统是怎么样才可以让如何推进都无法顺利执行完毕的“死局”得到“一线生机”呢?

    ​ 经过自己的思考(通过结论推过程----’囧‘),和翻看了网上的许多讨论后,觉得以下几点是比较靠谱的:

    ​ 可能一:进程在执行过程中,可能会提前终止。当进程处于不安全状态的时候,因为OS当前资源紧缺或者进程执行过程发生异常,导致某些进程没有继续申请资源而被终止(被kill或异常终止),这样被终止的进程就会释放资源,让OS避开这次死锁。

    ​ 可能二:进程在正常运行过程中,可能会提前释放部分资源。这一点,可能有些同学会疑惑,是不是破坏了请求和保持条件?其实并没有破坏了请求和保持条件,因为破坏请求和保持条件,需要OS必须保证做到:当一个进程在申请资源时,不得持有任何不可抢占资源,所以进程释放掉自己持有的部分资源是没有破坏请求和保持条件的。

    ​ 可能三:进程实际需要的最大资源小于声明的最大需求资源。在安全性检查算法中,使用的数据结构是需求矩阵Need和当前资源数Available,Need由最大需求矩阵Max减去已经分配的Allocation求得,Max是进程事先对自身所需资源的一个最坏情况下的预估(因为要满足运行,必定是>=实际需要的),但是在实际执行的情况中,可能进程实际上用不到这么多的资源,所以有可能就是这相差的资源数可以保证系统并非必然转换为死锁。

    ​ 可能四:进程申请的资源为可消耗性资源。这一点可能许多同学会懵,怎么还跑出了这么一个可消耗性资源的事,我们在资源分类的时候就讲过,资源分为可重用性资源和可消耗性资源,对于可消耗性资源,是可以在进程运行过程中产生的(比如消息),因此对于某些阻塞的进程,虽然当前资源不足,但有可能在有限的时间内可以申请到得以运行完成的资源(可消耗性资源,由别的进程执行过程中产生),因此可以释放掉自己持有的资源,让其他进程因此也可以执行完毕。

    ​ 以上四点是我个人总结的几点原因,个人感觉每种可能都对,查看外文文档,解释偏向于可能三,不过博主自己觉得一、二、四也是对的,毕竟答案不唯一,理论上可行就可以是答案。

    3.总结

    ​ 以上所有观点都是自己的个人观点,如果有哪位大佬有不同的看法或者还有可能五、六、七,都欢迎评论区留言讨论,还请不吝赐教。


    ​ 又到了分隔线以下,本文到此就结束了,本文内容全部都是由博主自己进行整理并结合自身的理解进行总结,如果有什么错误,还请批评指正。

    ​ 本文纯属探讨理论上的可能,另,原创不易,如果能解答你的疑惑,还请点赞支持。

    ​ 如有兴趣,还可以查看我的其他几篇博客,都是OS的干货,喜欢的话还请点赞、评论加关注^_^。

    操作系统武功修炼心法

    展开全文
  •  安全状态不是死锁状态但是死锁状态一定是不安全状态。然而不是所有的不安全状态都能导致死锁状态。  有了安全状态的概念,可以定义避免算法以确定系统不会死锁。其思想是简单的确保系统始终处于安全状态 。开始...
  • P1和P2形成一个环形,所以我们说它产生了死锁,这个图也是不安全状态。因为当P2申请一台输入设备时,输入设备已经分配给了P1,这就导致P2一直处于申请状态,当输出设备要分配给P2的时候,P2在申请,输出设备也就一直...

    一、产生死锁的原因:

    操作系统中的死锁:
    https://blog.csdn.net/jinjiniao1/article/details/92830672
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    P1和P2形成一个环形,所以我们说它产生了死锁,这个图也是不安全状态。因为当P2申请一台输入设备时,输入设备已经分配给了P1,这就导致P2一直处于申请状态,当输出设备要分配给P2的时候,P2在申请,输出设备也就一直等,如此循环死等。
    在这里插入图片描述

    二、产生死锁的条件和解决死锁的方法:

    在这里插入图片描述
    在这里插入图片描述

    三、死锁避免和预防的区别:

    死锁的预防是破坏产生死锁的四个必要条件之一,严格地防止死锁的出现。虽然增强了死锁产生的限制条件,却严重地影响了系统性能。而死锁的避免是在系统运行过程中注意避免死锁的发生,是系统对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,如果分配后系统不会发生死锁,则予与分配,否则,不予分配,需要清楚的是,即使死锁的必要条件存在,也不一定发生死锁。

    四、安全状态和安全序列:

    在这里插入图片描述
    在做上例之前,需要注意的是,剩余资源是给进程中尚需要量的:
    有进程P1、P2和P3三个,目前占有量分别是:2、5、2;最大需求量是:9、10、4;尚需要量:7、5、2;系统剩余资源量是:3;
    三个进程中P3的尚需要量是最低的所以先从P3开始,从剩余资源量中拿出2个资源给P3,还剩下1个;
    P3就有4个资源,满足最大需求量,可以完成进程,完成后4个资源全部返回。此时,剩余资源有5个,全部给P2,完成后全部返回,剩余资源量有10个,在给7个资源给P3,P3完成后返回,至此所有进程圆满完成。
    故,该状态存在安全序列:P3、P2、P1,该状态安全。

    五、银行家算法:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    系统剩余资源有:3、3、2对应:A、B、C
    其中P1、P2、P3、P4、P5五个进程,从上往下数,剩余资源满足P2,所以从P2开始,给出资源1、2、2,剩余:2、1、0,P2满足最大需求量,可以完成,完成后全部返回,剩余资源剩余:5、3、2;不满足P3,继续向下,满足P4,给出P4尚需要量:0、1、1,系统剩余资源:5、2、1;P4满足最大需要量,可以完成,完成后全部返回,此时系统剩余资源有:7、4、3;
    向下满足P5,给出4、3、3,自己剩余3、1、2,P5全部完成后,全部返回,此时系统剩余资源为:7、4、5;从头开始向下数,满足P1,给出:7、4、3,还剩:0、0、2;当P1完成后全部返回,系统剩余资源有:7、5、5;
    至此,P1、P2、P3、P4、P5五个进程全部完成,没有死锁,该状态存在安全序列:P2、P4、P5、P1、P3,该状态安全。

    六、不安全序列:

    当系统剩余资源量不满足系统任何一个进程的尚需要量的时候,该状态就属于不安全状态。
    在这里插入图片描述
    操作系统是否处于安全状态:
    https://www.bbaqw.com/anquan/4448830/

    展开全文
  • Linux:死锁避免之系统安全状态

    千次阅读 2018-04-23 21:22:06
    死锁避免方法之一:判断系统安全状态 避免死锁的方法中,允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程; 否则...
  • 操作系统中判断当前是否是安全状态和是否有死锁进程的算法比较类似,请说明二者之间的区别?
  • 2.4死锁

    千次阅读 2020-10-18 18:18:55
    2.4.1 死锁的概念 1.死锁的定义 所谓死锁,是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程将无法向前推进 2.死锁产生的原因 (1)系统资源的竞争 (2)进程推进顺序非法 (3)死锁产生...
  • 目录基本定义死锁产生的原因系统资源的竞争进程推进顺序非法死锁产生的必要条件死锁的处理策略死锁预防破坏互斥条件破坏不可剥夺条件方案一方案二破坏请求并保持条件破坏循环等待条件避免死锁系统安全状态银行家算法...
  • 一、死锁 (一)什么是死锁? 哲学家进餐问题中,如果5位哲学家进程并发执行,都拿起了左手边的筷子… 在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的...
  • 模拟实现银行家算法避免死锁的过程。 模拟实现银行家算法避免死锁的过程。...判断系统是否安全是通过找进程的安全序列实现,若有安全序列, 系统处于安全状态,若没有安全序列,则系统处于不安全状态
  • 死锁避免——>银行家算法

    千次阅读 2019-08-10 13:16:23
    只要能找到出一个安全序列,系统就是安全状态。当然,安全序列可能有多个。 如果分配了资源之后,系统中找不到任何一个安全序列,系统就进入不安全状态。这就意味着之后可能所有进程都无法顺利的执行下去。当然,...
  • 在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。 银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的...
  • 为了更好的理解死锁,读者可能需要了解线程安全相关的知识,主要是对线程执行的六大状态有一定的了解,尤其是阻塞状态,这是死锁发生的关键。进而才能对死锁的过程深入理解。这里附上一篇读前分享链接,当然,你也...
  • 互斥锁死锁状态详解

    千次阅读 2017-06-01 01:53:16
    那么到底怎样的情形才会产生死锁呢? 典型的两种死锁情形: (一)线程自己将自己锁住 一般情况下,如果同一个线程先后两次调用lock,在第二次调⽤用时,由于锁已经被占用,该线程会挂起等待占用锁的线程释放锁,然而...
  • 死锁 1.什么是死锁? 哲学家进餐问题中,如果5位哲学家进程并发执行,都拿起了左手边的筷子… 在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的...
  • 1. 概述 死锁就是进入了一个,问题无法解决的困境。...当两个进程都尝试接入这个资源有可能导致状态出错,大家都打不开。 1.2 死锁 产生死锁有几个必要条件 1)互斥条件:进程分配到的资源的使用是独占性的,.
  • 重要点用这个颜色标出 死锁:某个进程申请资源,如果这时资源不可用...但大多数操作系统都没有解决死锁的机制。 题目类型(下去搜一下经典题目,考研题):用现实生活中例子来分析,如哲学家就餐,银行家,车辆, ...
  • 2.19.2 死锁的条件 必要条件 互斥:一次只有一个进程可以使用一个资源 占有且等待:当进程等待其他资源时继续占有已有的资源 不可抢占:进程不能强行占有其他进程占有的进程 充分条件 循环等待:存在一个闭合的进程...
  • 死锁算法:银行家算法和安全性算法 借鉴了一些文章,自己总结了...若有,在进一步计算将这些资源分配给进程后,是否会使系统处于不安全状态。如果处于安全状态,才将资源分配给他;否则,让进程等待。 银行家算法中
  • 所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 因此我们举个例子来描述,如果此时有一个线程A,按照先锁a再获得锁b的的顺序...
  • 如果一个进程集合里面的每个进程都在等待这个集合中的其他一个进程(包括自身)才能继续往下执行,若无外力他们将无法推进,这种情况就是死锁,处于死锁状态的进程称为死锁进程。 二、死锁产生的原因? 1.因竞争...
  • 如果系统不能分配,应给出无法找到安全序列的提示并输出最终到达的死锁状态(含已分配矩阵、最大需求矩阵、剩余可分配资源等) (4)另选择一种死锁避免的方法进行实现,完成整个过程。如哲学家就餐、生产者-消费者...
  • 什么是死锁死锁产生的条件?
  • (2)能够判断某一时刻系统是否处于安全状态,如果处于安全状态能够给出安全序列。 (3)当某进程提出资源申请时,能够判断是否能把资源分配给申请进程。 (4)程序可以添加资源 删除资源 修改资源 添加进程和删除...
  • 线程的死锁

    千次阅读 2021-09-01 10:59:42
    2)出现死锁后,不会出现异常,不会出现提示,只是所有的线程都出于阻塞状态,无法继续。 解决方法: 1)专门的算法、原则 2)尽量减少同步资源的定义 3)尽量避免嵌套同步 我们使用的同时要避免出现死锁...
  • 文章目录前言一、预防死锁知识总览破坏互斥条件破坏不剥夺条件破坏请求和保持条件破坏循环等待条件知识回顾与重要考点二、避免死锁知识总览什么是安全序列安全序列、不安全状态死锁的联系银行家算法找得到安全序列...
  • 死锁

    千次阅读 多人点赞 2021-05-08 21:19:54
    死锁 银行家算法 面试
  • 死锁没有外界干预的情况下是永久性的。 2 死锁的条件 死锁有3个必要条件: 互斥:一次只有一个进程可以使用一个资源,其他进程不能访问已经分配给其他进程的资源。 不可剥夺:不能够抢占其他进程已有的资源。 ...
  • PAGE PAGE 5 实验6 死锁避免银行家算法的实现 开发语言及实现平台或实验环境 ...3理解和掌握安全序列安全性算法 实验要求 1了解和理解死锁 2理解利用银行家算法避免死锁的原理 3会使用某种编程语言 实验原理 一安全状态

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 106,644
精华内容 42,657
关键字:

安全状态是没有死锁的状态