左撇子和右撇子哲学家的混合,一个棘手的问题?

时间:2015-03-25 11:04:43

标签: operating-system deadlock semaphore critical-section dining-philosopher

  

引理1:我们知道在任何桌子上都有左撇子和右撇子的混合物   哲学家,僵局不可能发生。我非常熟悉它的证明。

我最近在采访中遇到了以下问题。

有五位哲学家坐在圆桌旁。在每两个哲学家之间有一根筷子。每个哲学家都需要两根筷子才能吃。我们有两种类型的哲学家:左撇子和右撇子。左撇子先左手拿筷子。右手先用右手拿筷子。假设在5位哲学家中至少有1名左撇子和至少1名右撇子。其中哪一个是真的:

  

a)独立于圆形安置哲学家的组合   表,没有死锁。 (我确定是的)

     b)如果所有的哲学家同时采取第一个   筷子,有一个僵局。 (我认为这是真的,因为在   如果我们有一个 - > b和a是假a - > b是真的那么暗示   这个选项没有办法让所有哲学家同时接受   第一根筷子,所以整个陈述都是真的。)

任何专家都可以帮助我,我认为是真的吗?

  

编辑1:我添加了Lemma1的证明:(但上面提到的问题   有一些差异。 )

     

首先观察到由于周围的资源获取模式   该表只有一个可能的等待周期,即周期   涉及所有哲学家。所以假设这样的僵局。一切   哲学家必须等待,我们指的是等待一种砧木   由另一个人持有。因此必须保持所有筷子。如果我们的桌子有   左撇子和右撇子哲学家的混合,必须有   至少有一对相反的手性的相邻哲学家。第一   假设一个坐在左边的左撇子哲学家(“Lenny”)   右撇子哲学家(“罗杰”)。因为所有的筷子都必须   举行,Lenny或Roger必须握住介于两者之间的筷子   他们。如果Lenny持有它,那就是他的“正确的筷子”,所以他必须这样做   以前已经拿到了他左边的筷子。因此Lenny持有   两根筷子,并没有等待获得任何(他正在吃),所以   没有僵局。如果罗杰拿着介于两者之间的筷子   他们,这是他的“左筷子”​​,所以他必须先前拥有   如果我们打电话给前一个案子,他就把右边的砧木收了起来   “外向”案件,然后“向内到达”案件是一个   右撇子哲学家坐在左撇子的左边   哲学家。再说一次,如果我们遇到僵局,那么所有的筷子都必须是   举行,所以其中一个拿着筷子。这意味着   另一个没有筷子,因为他们之间的筷子是   每个人都会尝试获得(罗杰达到了正确并得到了   它,或莱尼到达并得到它;另一个正在等待它   在向外伸展之前)。如果有n个philosphers   和n筷子,所有的筷子都举行,但一个哲学家持有零   筷子,然后n-1哲学家拿n筷子。一些哲学家   必须拿两根筷子;哲学家不等待(他是   吃),所以没有僵局。

1 个答案:

答案 0 :(得分:0)

以下是一个示例案例:

一位左撇子哲学家,四位右撇子哲学家: 如果所有人都拿起一根筷子,一位左撇子的哲学家在左手边赢得筷子的斗争,他有一根筷子,右手边的筷子仍然是自由的。在下一次迭代中,他或他的右手邻居将拿起最后一个免费筷子。无论哪种方式,至少有一位哲学家吃两根筷子。 - >没有死锁

假设是,没有哲学家试图接受,"向外"筷子,除非,他已经获得了"内向"之一。

现在让我们解剖问题b):如果所有的哲学家都设法在同一时间点获得一根筷子,那么所有的哲学家都必须是左撇子,或者一切都必须是右撇子。 因为那时筷子没有挣扎,每个哲学家都拿着一根筷子。 但这违反了你的先决条件:至少有一个左手和一个右手的哲学家。

假设除了一个人之外的所有人都是右撇子,两位哲学家将争夺一根筷子。一个人将失去这场斗争,无法拿起筷子。因此,条件"所有人同时拿起一根筷子"不能实现。正如你所说的那样,暗示的前提条件是错误的,因此,暗示评估为真。

所以回答你的问题:是的,你的推理是正确的。