[26][29][单选]下列图示描述的是经典的哲学家进餐问题。下列各方法中,哪一种方法可以预防死锁的发生?
定时检查,当发现死锁时,额外提供一支新筷子
为每只筷子设置一个信号量,哲学家通过执行 P、V 操作对筷子的互斥使用
给所有哲学家编顺序号,要求奇数号哲学家先取得其左边的筷子,而偶数号哲学家则反之
采用银行家算法分配筷子
答案
给所有哲学家编顺序号,要求奇数号哲学家先取得其左边的筷子,而偶数号哲学家则反之
解析
在设计系统时确定资源分配算法,限制进程对资源的申请,从而保证不发生死锁,具体的做法是破坏产生死锁的四个必要条件之一。其中破坏“循环等待”条件是当进程申请资源时,必须严格按照资源编号的顺序进行,即系统按某种顺序给每个资源编号,进程申请资源时必须按编号顺序进行申请,这样就不会产生循环等待。P、V 操作虽然可以保证互斥使用资源,但有可能产生死锁。银行家算法是死锁避免的方法。
转载请注明出处。