精华内容
下载资源
问答
  • 不安全状态与死锁状态
    千次阅读 多人点赞
    2018-11-28 21:48:19

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

    更多相关内容
  • 操作系统中不安全状态为何并非一定转为死锁

    万次阅读 多人点赞 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的干货,喜欢的话还请点赞、评论加关注^_^。

    操作系统武功修炼心法

    展开全文
  • 图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先完成,从而避免了死锁。因而,安全状态和不安全状态的区别是:从安全状态出发,系统能够保证所有进程都能完成;而从不安全状态出发,就没有这样的保证。
    在这里插入图片描述

    展开全文
  • 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/

    展开全文
  •  安全状态不是死锁状态但是死锁状态一定是不安全状态。然而不是所有的不安全状态都能导致死锁状态。  有了安全状态的概念,可以定义避免算法以确定系统不会死锁。其思想是简单的确保系统始终处于安全状态 。开始...
  • 操作系统:死锁

    2022-01-12 12:38:07
    一、死锁 1.1 死锁的概念 1.1.1 什么是死锁 每个人都占有一个资源, 同时又在等待另一个人手 里的资源。...饥饿:由于长期得到想要的资源,某进程无法向前推进的现象。比如:在短进程优先(SPF)算法 中
  • java线程安全问题与死锁

    千次阅读 2021-11-11 22:12:43
    出现了线程的安全问题 * 2.问题出现的原因:当莫格线程操作车票的过程中,尚未操作完成时,其他线程参与进来 * 3.如何解决:当一个线程在操作ticket的时候,其他线程能参与进来,直到线程a操作完,其他线程才...
  • Linux:死锁避免之系统安全状态

    千次阅读 2018-04-23 21:22:06
    想要有顺序地学习Linux,入口在这里哦: Linux:目录索引 详细的死锁问题,请点击链接:Linux:死锁的...若此次分配不会导致系统进入不安全状态,则将资源分配给进程; 否则,让进程等待。 安全状态 所谓安...
  • 通过破坏产生死锁的四个必要条件来预防死锁,但因互斥条件是必须的,所以能破坏该条件。 预防死锁-破坏“请求和保持”条件 为了破坏该条件,OS需要保证:当进程请求资源时,可持有可抢占资源。可通过两个...
  • 是指多个进程在运行过程中因争夺资源而造成的一种僵局(DeadlyEmbrace),当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 死锁的定义:集合中的每一个进程都在等待只能由本集合中的其他进程才能...
  • 死锁:某个进程申请资源,如果这时资源可用,那么该进程进入等待状态;如果所申请的资源被其他等待进程占有,那么该等待进程有可能再也无法改变其状态。 ——多个进程竞争性使用资源,产生了一个永久性阻塞状态 ...
  • 死锁避免——>银行家算法

    千次阅读 2019-08-10 13:16:23
    如果分配了资源之后,系统中找到任何一个安全序列,系统就进入不安全状态。这就意味着之后可能所有进程都无法顺利的执行下去。当然,如果有进程提前归还了一些资源,那系统也有可能重新回到安全状态,不过在分配...
  • 3.6 预防死锁的方法 一、预防死锁 二、系统安全状态 三、利用银行家算法避免死锁 3.7 死锁的检测解除 一、死锁的检测 二、死锁的解除
  • 2.4死锁

    千次阅读 2020-10-18 18:18:55
    产生死锁必须同时满足以下四个条件,只要其中任意一个条件成立,死锁就不会发生 互斥条件 剥夺条件 请求并保持条件:进程已经保持了至少一个资源,但又提出新的资源请求,而该资源已被其他进程所占有,此时请求...
  • 模拟实现银行家算法避免死锁的过程。 模拟实现银行家算法避免死锁的过程。...判断系统是否安全是通过找进程的安全序列实现,若有安全序列, 系统处于安全状态,若没有安全序列,则系统处于不安全状态
  • 操作系统中判断当前是否是安全状态和是否有死锁进程的算法比较类似,请说明二者之间的区别?
  • 死锁: 如果在一个进程 集合中的每个进程都在等待只能由该集合中的其他一个 进程才能引发的事件,则称一组进程或系统此时发生了死锁。 产生原因: 1.资源竞争:系统中共享资源数目难以满足进程需要,竞争可抢占资源,...
  • 关于死锁你想知道的

    2020-11-14 16:04:36
    死锁(Deadlock): 指进程之间无休止地互相等待! 饥饿(Starvation):指一个进程无休止地等待! 活锁(livelock):指进程没有被阻塞,但由于某些条件满足,导致一直重复尝试,失败…… 本文内容 死锁概念 指两个或多个...
  • 死锁典型例题,对理解死锁的计算类题目有帮助
  • 一、死锁 (一)什么是死锁? 哲学家进餐问题中,如果5位哲学家进程并发执行,都拿起...饥饿:由于长期得到想要的资源,某进程无法向前推进的现象。比如:在短进程优先(SPF)算法中,若有源源不断的短进程到来,则
  • 死锁的检测解除

    千次阅读 2021-05-23 01:14:21
    若一个进程提出资源请求得到满足,而此时没有由于等待资源而被阻塞的进程,则自己就被阻塞。而当此时已有等待资源而被阻塞的进程,则检查所有由于等待资源而被阻塞的进程。若它们有申请进程所需要的资源,则将这些...
  • 为了更好的理解死锁,读者可能需要了解线程安全相关的知识,主要是对线程执行的六大状态有一定的了解,尤其是阻塞状态,这是死锁发生的关键。进而才能对死锁的过程深入理解。这里附上一篇读前分享链接,当然,你也...
  • 2.19.2 死锁的条件 必要条件 互斥:一次只有一个进程可以使用...死锁检测解除 2.20 死锁预防 间接方法:防止死锁的三个必要条件之一 防止互斥:可防止 防止占有且等待:要求进程一次性请求所有需要的资源(效率
  • 死锁的处理策略之避免死锁

    千次阅读 2020-02-23 15:09:26
    2. 安全序列、不安全状态死锁的联系 所谓安全序列,就是指如果系统按照这种序列分配资源,则每个进程都能顺利完成。只要能找出一个安全序列,系统就是安全状态。当然,安全序列可能有多个。 如果分配了资源之后,...
  • 如果系统中既采取预防死锁的措施,也采取避免死锁的措施,系统就很可能发生死锁。 ...2.提供一种算法,利用上述信息来检测系统是否已进入死锁状态。 1.数据结构资源分配图: 1.两种结点..
  • Java多线程,线程安全,线程死锁,线程通信,线程同步(上) 什么是线程?? 线程是计算机执行的最小单位,在一个进程中可以有多个不同线程 多线程有什么用?干什么的? 单线程就像一个瓶子戳一个洞,而多线程是戳了多个洞,...
  • 1处理机调度与死锁(1).doc
  • 死锁与饥饿

    千次阅读 2018-05-12 19:52:39
    死锁类型:1.竞争资源2.进程通信3.其他原因死锁的条件:资源独占(mutual exclusion):一个资源在同一个时刻只能被分配给一个进程。可剥夺(non preemption):资源申请者能强行地从资源占有者手中夺取资源,即资源...
  • 2,什么是系统的不安全状态与死锁有什么关系 如果分配资源后,系统中找不出任何一个安全序列,系统就进入了不安全状态。这就意味着之后可能所有的进程都无法顺利执行下去。当然如果有进程提前归还了一些资源,...
  • 目录基本定义死锁产生的原因系统资源的竞争进程推进顺序非法死锁产生的必要条件死锁的处理策略死锁预防破坏互斥条件破坏可剥夺条件方案一方案二破坏请求并保持条件破坏循环等待条件避免死锁系统安全状态银行家算法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 112,095
精华内容 44,838
关键字:

不安全状态与死锁状态

友情链接: 200801e.rar