请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

银行家算法的问题

Dijkstra提出的银行家算法属于
A)死锁预防
B)死锁避免
C)死锁检测
D 死锁解除

一道很常见的银行家算法辨析题,我不明白为什么选择B。
为什么说它可以避免死锁,而不是预防死锁?这两个词到底有什么区别?
避免死锁算法和预防死锁的算法又有什么区别?

正在回答 回答被采纳积分+3

1回答

咚咚呛 2019-09-04 23:12:53

这个点确实需要注意一下,但是转过头一想感觉也有点背书式了,按照自己的理解说明一下,有点绕口。

所谓死锁预防,主要是从离散数学,或者是数理逻辑上去考虑的,我们知道死锁有四个必要条件,只要满足这四个条件,死锁一定发生,那么只要破坏其中一个条件,就不构成死锁了。因为破坏了必要条件,所以不造成死锁,那么作为不发生死锁的前置条件,就是预防。

而死锁避免,则不是通过破坏这四个必要条件去解决死锁的,他是在运行过程中通过一定的策略不让死锁发生,这就算避免。


0 回复 有任何疑惑可以回复我~
  • 提问者 慕哥2296688 #1
    还是有点不太明白,为什么银行家算法不破坏那四个必要条件,但是也可以避免死锁的发生呢?
    回复 有任何疑惑可以回复我~ 2019-09-05 12:46:18
  • MOCKINGT 回复 提问者 慕哥2296688 #2
    意思就是如果可能发生死锁就不分配资源,也就是need > available的情况。“如果可能发生死锁就不分配资源”这个是策略,如果策略不当依旧会造成死锁,预防是破坏那四个条件,一定不会发生死锁。这是我的理解。
    回复 有任何疑惑可以回复我~ 2019-12-29 13:10:03
  • 八朔 回复 提问者 慕哥2296688 #3
    是因为他没有预防死锁吧,比如资源都不够,他就还是会死锁,只是在资源够的情况下,避免死锁发生。
    回复 有任何疑惑可以回复我~ 2020-02-28 15:46:26
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信