什么是死锁避免?目标是什么,它应该实现什么目标?你能举一些不同类型的死锁避免算法的例子,为什么会有不同的算法?为什么没有一种类型的死锁避免算法?
答案 0 :(得分:0)
当存在一个进程循环(或其他事物)时会发生死锁,这样循环的每个元素都在等待循环的下一个元素。因为循环包裹,循环中没有元素可以继续。参见例如https://en.wikipedia.org/wiki/Wait-for_graph
避免死锁相当于确保此类循环永远不会存在。想法包括只有一个任何人等待的对象,强制执行一个规则,处理永远不会等待任何其他人等待的东西,或者(最常见的)对进程等待的事情强制执行命令并且只请求它们按此顺序。
在https://cs.nyu.edu/courses/spring02/V22.0202-002/lecture-08.html(第3.6节)的流程环境和http://pages.cs.wisc.edu/~tvrdik/8/html/Section8.html的数据包路由环境中有一个这样的写法。
出于类似的原因,我声称当两个人试图穿过相反方向的门口时,离开较小空间的人应该优先考虑 - 但我注意到人们在现实生活中不遵守这个惯例。 / p>