湘潭大学操作系统第3章课件探究.ppt

(1)问题描述 有五位哲学家,用一生来思考和吃饭。他们围坐在一张圆桌旁边,桌子中央有一大碗米饭,桌上还有五个碗和五只筷子,他们的生活方式是交替地进行思考和进餐。平时,当某位哲学家进行思考时,他不与其它哲学家交互。当他感觉到饥饿时,便试图拿起与其左右最靠近他的筷子。满足: 一个哲学家每次只能拿起一只筷子,且他不能从其他哲学家手里拿筷子 只有在他拿到两只筷子时才能进餐 3.4.5 经典同步问题 * (2) 用信号量解决哲学家就餐问题 每一只筷子的使用都必须是互斥的,在某一时刻只允许一个哲学家使用 利用一个信号量表示一只筷子,五只筷子的信号量数组定义为semaphore chopstick[5] 3.4.5 经典同步问题 * 信号量解决哲学家就餐问题描述如下: semaphore chopstick[5] = {1,1,1,1,1}; int i; void philosopher (int i){ while(TRUE){ // think wait(chopstick[i]); wait(chopstick[(i+1) % 5]); // eat signal(chopstick[(i+1) % 5]); signal(chopstick[i]); } } void main(){ parbegain (

文档评论(0)

1亿VIP精品文档

相关文档