题2
题目
Q:在哲学家进餐问题中, 若所有哲学家同时拿起左筷子, 则发生死锁, 因为他们都需要右筷子才能用餐。为了让尽可能多的哲学家可以同时用餐, 并且不发生死锁, 可以利用信号量 PV 操作实现同步互斥, 下列说法中正确的是 ( )。
A. 使用信号量进行控制的方法一定可以避免死锁
B. 同时检查两支筷子是否可用的方法可以预防死锁, 但是会导致饥饿问题
C. 限制允许拿起筷子的哲学家数量可以预防死锁, 它破坏了 “循环等待” 条件
D. 对哲学家顺序编号, 奇数号哲学家先拿左筷子, 然后拿右筷子, 而偶数号哲学家刚好相反, 可以预防死锁, 它破坏了 “互斥” 条件
分析
A:信号量机制能确保临界资源的互斥访问, 不能完全避免死锁, A 错误。
同时检查两支筷子是否可用的方法可以预防死锁, 但是会导致资源浪费, 因为可能有一些空闲的筷子无法使用, 但拿到筷子的哲学家用完餐后, 释放筷子, 其他哲学家就可以正常用餐, 因此不会导致饥饿现象,
若限制允许拿起筷子的哲学家数量,则不被允许的哲学家左边的哲学家一定可以拿到两边的筷子, 从而破坏 “循环等待” 条件, C 正确。
对哲学家顺序编号, 奇数号哲学家先拿左筷子, 然后拿右筷子, 而偶数号哲学家刚好相反, 则相邻的哲学家总有一个可以拿起两边的筷子, 但这破坏的是 “循环等待” 条件, 而不是 “互斥条件”, D 错误。
解
C