采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
Dijkstra提出的银行家算法属于 A)死锁预防 B)死锁避免 C)死锁检测 D 死锁解除
一道很常见的银行家算法辨析题,我不明白为什么选择B。 为什么说它可以避免死锁,而不是预防死锁?这两个词到底有什么区别? 避免死锁算法和预防死锁的算法又有什么区别?
这个点确实需要注意一下,但是转过头一想感觉也有点背书式了,按照自己的理解说明一下,有点绕口。
所谓死锁预防,主要是从离散数学,或者是数理逻辑上去考虑的,我们知道死锁有四个必要条件,只要满足这四个条件,死锁一定发生,那么只要破坏其中一个条件,就不构成死锁了。因为破坏了必要条件,所以不造成死锁,那么作为不发生死锁的前置条件,就是预防。
而死锁避免,则不是通过破坏这四个必要条件去解决死锁的,他是在运行过程中通过一定的策略不让死锁发生,这就算避免。
还是有点不太明白,为什么银行家算法不破坏那四个必要条件,但是也可以避免死锁的发生呢?
意思就是如果可能发生死锁就不分配资源,也就是need > available的情况。“如果可能发生死锁就不分配资源”这个是策略,如果策略不当依旧会造成死锁,预防是破坏那四个条件,一定不会发生死锁。这是我的理解。
是因为他没有预防死锁吧,比如资源都不够,他就还是会死锁,只是在资源够的情况下,避免死锁发生。
登录后可查看更多问答,登录/注册
编程之前先学这门课,系统补足计算机基础知识,夯实编程地基
3.4k 17
1.7k 14
1.2k 13
1.3k 11