操作系统中哲学家进餐问题怎么解决?

如题所述

第1个回答  2012-09-04
问题描述:
假设有四个人四只筷子,筷子是放在两人中间的,也就是说1号筷子放在1、2号哲学家之间。对于1号哲学家而言,1号筷子在他左边,而4号筷子在他右边。

先说死锁发生时的状态,任何人都占有且公占有1根筷子,导致1等2, 2等3, 3等4, ... ,n-1等n,n等1发生死锁
再说这个解决方法中的情况,对任意一个奇数号哲学家A来说,他在任意一个时刻的状态可分为以下三种:
1. A在抢左边的筷子X时没有抢到,那他就是两手空空,因为奇数先抢左边的,成功了才能抢右边的,没拿着左边的筷子,也肯定没拿着右边的筷子。这不符合死锁发生时任何人都占有1根筷子的情况,不会发生死锁。
2. A在抢左边的筷子X时成功了,那我们看看他左边的哲学家B, B是偶数号哲学家,他要先抢右边的筷子,因为A和B相邻,所以A左边的筷子X就是B右边的筷子,而X被A抢去了,B没有抢到,那B也不能去抢自己左边的筷子了, 所以B一定是两手空空,不符合死锁形成的条件。
这里的A是奇数号,你可以再假设一下A是偶数号,也无非上面的两种情形而已,不过左右颠倒一下罢了。
因此,在任意时刻,任意的一个哲学家不是抢到了第一根筷子, 就是没有抢到第一根筷子,而无论有没有,都不会造成死锁。也就是说任意时刻,无论怎么抢,也不会有死锁。本回答被网友采纳
第2个回答  2012-09-04
用信号量集,要么同时分配资源,若不满足就不分配,放弃已拥有的资源.

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网