我如何证明餐饮哲学家是否患有死锁或饥饿的可能性?从哪儿开始?

时间:2010-03-14 17:54:19

标签: multithreading concurrency

我有一项家庭作业,要证明餐饮哲学家问题的某种变化是否会因僵局或饥饿而受到影响。我怀疑这种情况根本不会受到影响,但我发现这很难解释,我真的不知道从哪里开始。是否存在攻击此类问题的一般策略?

2 个答案:

答案 0 :(得分:2)

您可以阅读有关DAG(定向非循环图)的Wait-for graphs(更多详情here)并用于检测死锁。

欢呼声

答案 1 :(得分:0)

首先,我会非常惊讶地听到有一个解决这个问题的一般策略,这个策略并不是那么抽象而无用。

现在,显示变体是安全的,比证明要容易得多:你的任务是证明变体是否安全?如果是这样,你可以减少部分的数量(将哲学家的数量减少到两个或三个)并尝试应用一个或多个formal verification方法。

在实践中,形式验证非常罕见,我可以通过一个例子来说明这一点:我与从事核设施使用的软件的人谈过(没有详细说明),当我问他们是否使用正式验证,我得到了“嗯,是的,我们应该[使用它] ......”