[25][29][单选]下列图示描述的是经典的哲学家进餐问题。下列各方法中,哪一种可以预防死锁的发生?
仅当一个哲学家左右两边的叉子都可用时,才允许他取得叉子
为每只叉子设置一个信号量。哲学家通过执行 P、V 操作对叉子的互斥使用
定时检查,当发现死锁时,额外提供一支新叉子
采用银行家算法分配叉子
答案
仅当一个哲学家左右两边的叉子都可用时,才允许他取得叉子
解析
仅当某哲学家左右两边的叉子都可用时,才允许他取叉子,那么必然有一个哲学家能拿到两把叉子用餐。当他用餐完毕并释放出两把叉子,其他等待叉子的哲学家又能获得叉子用餐,以此类推,最终所有哲学家都有获得两把叉子的机会进而用餐。(P,V操作虽然可以保证进程间使用,但有可能产生死锁,定时检查无法及时预防死锁的发生,银行家算法是属于避免死锁。故选 A 选项。
转载请注明出处。