死锁,活锁,饥饿的区别是什么?

作者&投稿:韶果 (若有异议请与网页底部的电邮联系)
操作系统中,饥饿与死锁的区别?~

饥饿是指系统不能保证某个进程的等待时间上界,从而使该进程长时间等待,当等待时间给进程推进和响应带来明显影响时,称发生了进程饥饿。当饥饿到一定程度的进程所赋予的任务即使完成也不再具有实际意义时称该进程被饿死。
死锁是指在多道程序系统中,一组进程中的每一个进程都无限期等待被该组进程中的另一个进程所占有且永远不会释放的资源。
相同点:二者都是由于竞争资源而引起的。
不同点:
从进程状态考虑,死锁进程都处于等待状态,忙等待(处于运行或就绪状态)的进程并非处于等待状态,但却可能被饿死;
死锁进程等待永远不会被释放的资源,饿死进程等待会被释放但却不会分配给自己的资源,表现为等待时限没有上界(排队等待或忙式等待);
死锁一定发生了循环等待,而饿死则不然。这也表明通过资源分配图可以检测死锁存在与否,但却不能检测是否有进程饿死;
死锁一定涉及多个进程,而饥饿或被饿死的进程可能只有一个。
在饥饿的情形下,系统中有至少一个进程能正常运行,只是饥饿进程得不到执行机会。而死锁则可能会最终使整个系统陷入死锁并崩溃。

死锁: 可以认为是两个线程或进程在请求对方占有的资源。
饥饿:一个线程在无限地等待另外两个或多个线程相互传递使用并且用不会释放的资源。
出现以下四种情况会产生死锁:

1,相互排斥。一个线程或进程永远占有共享资源,比如,独占该资源。

2,循环等待。例如,进程A在等待进程B,进程B在等待进程C,而进程C又在等待进程A。

3,部分分配。资源被部分分配,例如,进程A和B都需要访问一个文件,同时需要用到打印机,进程A得到了这个文件资源,进程B得到了打印机资源,但两个进程都不能获得全部的资源了。

4,缺少优先权。一个进程获得了该资源但是一直不释放该资源,即使该进程处于阻塞状态。



扩展资料
死锁和活锁的区别:活锁和死锁很像似。 只是活锁的状态可以发生改变。不过虽然状态可以改变,却没有实质的进展。比如两个人在一个很宅的胡同里。 一次只能并排过两个人。 两人比较礼貌,都要给对方让路。 结果一起要么让到左边,要么让到右边,结果仍然是谁也过不去。 类似于原地踏步或者震荡状态。
活锁一般是由于对死锁的不正确处理引起的。由于处于死锁中的多个线程同时采取了行动。 而避免的方法也是只让一个线程释放资源。

死锁发生在当一些进程请求其它进程占有的资源而被阻塞时。

另外一方面,活锁不会被阻塞,而是不停检测一个永远不可能为真的条件。除去进程本身持有的资源外,活锁状态的进程会持续耗费宝贵的CPU时间。

最后,进程会处于饥饿状态是因为持续地有其它优先级更高的进程请求相同的资源。不像死锁或者活锁,饥饿能够被解开。例如,当其它高优先级的进程都终止时并且没有更高优先级的进程到达。


死锁,活锁,饥饿的区别是什么?
死锁发生在当一些进程请求其它进程占有的资源而被阻塞时。另外一方面,活锁不会被阻塞,而是不停检测一个永远不可能为真的条件。除去进程本身持有的资源外,活锁状态的进程会持续耗费宝贵的CPU时间。最后,进程会处于饥饿状态是因为持续地有其它优先级更高的进程请求相同的资源。不像死锁或者活锁,饥饿能够被...

2020-07-15:死锁与活锁的区别,死锁与饥饿的区别?
相比之下,活锁更像是一场无尽的循环。虽然实体并未被阻塞,但它们在不断尝试与失败的循环中,等待条件的满足。活锁的特点是动态变化,而死锁则是静态的等待,活锁有可能自行解决,但死锁一旦形成,除非外部干预,否则无法解脱。而饥饿,则是更为微妙的现象,它描述的是线程在可获得资源的情况下,由于种...

什么是“死锁”和“饥饿”
死锁: 可以认为是两个线程或进程在请求对方占有的资源。饥饿:一个线程在无限地等待另外两个或多个线程相互传递使用并且用不会释放的资源。出现以下四种情况会产生死锁:1,相互排斥。一个线程或进程永远占有共享资源,比如,独占该资源。2,循环等待。例如,进程A在等待进程B,进程B在等待进程C,而进程C...

活锁和死锁是什么意思啊
2、死锁(Deadlock),这里指的是进程死锁,是个计算机技术名词。它是操作系统或软件运行的一种状态:在多任务系统下,当一个或多个进程等待系统资源,而资源又被进程本身或其它进程占用时,就形成了死锁。有个变种叫活锁。3、死锁:可以认为是两个线程或进程在请求对方占有的资源。饥饿:一个线程在无限...

每日一道面试题-什么是活锁?
活锁可以被理解为一种特殊的资源饥饿,它并不像传统的饥饿那样简单。例如,当事务T2坚持不懈地尝试获取锁R,这种不断尝试却始终失败的过程,看似活锁,但关键在于它缺乏“活”的关键特性。在这种情况下,虽然T2在不断争取,但并未陷入无法自拔的境地。设想一下这样的场景:事务T1已经占有了资源R,当T2...

活锁的活锁(livelock)
活锁可以认为是一种特殊的饥饿。 下面这个例子在有的文章里面认为是活锁。实际上这只是一种饥饿。因为没有体现出“活”的特点。 假设事务T2再不断的重复尝试获取锁R,那么这个就是活锁。如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁后,系统首先批准了...

哲学家就餐问题
这种方法经常是实际计算机科学问题中最实用的解法,通过为分级锁指定常量,强制获得锁的顺序,就可以解决这个问题。Chandy\/Misra解法1984年,K. Mani Chandy和J. Misra提出了哲学家就餐问题的另一个解法,允许任意的用户(编号P1, ..., Pn)争用任意数量的资源。与迪科斯彻的解法不同的是[来源请求],...

starvation和deadlock 有什么区别
Deadlock就是指两个或者多个进程同时访问临界资源,从而对方都互相等待,使在没有外部干预下程度无法执行。另一个我不清楚英文意思,呵呵…

java 中 阻塞队列 非阻塞队列 和普通队列的区别是什么
非阻塞算法堆死锁和优先级倒置有“免疫性”(但它们可能会出现饥饿和活锁,因为它们允许重进入)。非阻塞算法通过使用低层次的并发原语,比如比较交换,取代了锁。原子变量类向用户提供了这些底层级原语,也能够当做“更佳的volatile变量”使用,同时提供了整数类和对象引用的原子化更新操作 ...

避免活锁的方法是
避免活锁的方法是:先来先服务。活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。避免活锁的简单方法是采用先来先服务的策略。当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请...

龙岗区19696436384: 饥饿导致饿死和死锁有什么区别? -
佛尹米乐: 这个很容易理解 饥饿是低优先级的进程总是没资源没资源还是没资源 最后他饿死了(我也不知道他饿死会什么样 但是一直没有资源还是肯定的) 至于死锁 基本上就好像两个人想要吃饭 一个人占着馒头但是吃不下去 想要喝汤 另一个人占着汤 但是觉得不解饿 想要吃馒头 于是两个人都互相想要对方的馒头(汤) 同时两个人又都不愿意放弃手中的汤(馒头) 于是他俩也吃不好饭 于是就死锁了(我的比喻其实不是很恰当 很多造成死锁的资源其实都是可以再利用的 只是一时间互不相让而又互有所需才会卡住 不像馒头和汤 吃了就没了... 我都饿了) 查看原帖>>

龙岗区19696436384: 什么是“死锁”和“饥饿” -
佛尹米乐: 死锁(deadlock) 指的是两个或者两个以上的进程相互竞争系统资源,导致进程永久阻塞. 例如: 1、桌子上有慢慢一桌子的美食,但是只有一双筷子. 2、甲拿了一根,然后在找另一根. 3、乙拿了一根,然后也在找另一根. 4、因为他们都...

龙岗区19696436384: 进程同步的死锁和饿死的区别是什么 -
佛尹米乐: 产生死锁的原因:一是系统提供的资源数量有限,不能满足每个进程的使用;二是多道程序运行时,进程推进顺序不合理. 产生死锁的必要条件是:1、互斥条件;2、不可剥夺条件(不可抢占);3、部分分配;4、循环等待. 根据产生死锁的...

龙岗区19696436384: 活锁和死锁是怎么回事? -
佛尹米乐: 一、活锁 如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待.T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待.然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求,...,T2有...

龙岗区19696436384: 什么是死锁、饥饿、饿死、活锁?试分析它们的区别与联系 - 上学吧普...
佛尹米乐: 活锁是可以很容易打开的.死锁是打不开的.

龙岗区19696436384: synchronized和lock的区别 -
佛尹米乐: 总的来说,lock更加灵活.主要相同点:Lock能完成synchronized所实现的所有功能不同: 1.ReentrantLock功能性方面更全面,比如时间锁等候,可中断锁等候,锁投票等,因此更有扩展性.在多个条件变量和高度竞争锁的地方,用...

龙岗区19696436384: 孔明锁和鲁班锁有什么区别啊 -
佛尹米乐: 鲁班锁死锁,诸葛锁活锁

龙岗区19696436384: oracle 死锁和锁等待的区别 -
佛尹米乐: 死锁指的是a,b两个事务对同一对象进行dml或ddl操作(即修改表结构或者增删改数据),出现了相互等待被锁定的对象的情况,即类似于红绿灯十字路口红灯方向堵住路口,绿灯方向却红灯车辆挡在路口不能过去,这样无论红绿灯如何变化都无...

龙岗区19696436384: 数据库表级锁的区别 -
佛尹米乐: 数据库锁的分类一般有两种:锁类型分类--共享锁、独占锁锁范围分类--表级锁和行级锁. 表级锁:锁住整个表,限制其他用户对该表的访问方式,例如 只读、加共享锁等. 行级锁:锁住表的某一行,限制其他用户对该行的访问方式,例如 只读、加共享锁等.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网