操作系统2022-4-11(1)

第一题:

哲学家就餐问题:
1)按照教材中的解决方法描述,什么情况下5个哲学家全部吃不上饭?
2)描述一种没有人饿死(永远拿不到筷子)算法。双号学生按奇数号偶数号哲学家分组策略)

(1)当哲学家饥饿时,总是先去拿他左边的筷子。而当五个哲学家同时饥饿时,会同时拿他左边的筷子,就会使五个信号量,同时变成0,当他们再试图拿右边的筷子时,就会因为没有筷子可以拿陷入无限的等待。5个哲学家全部都吃不上饭,全都饿死。

2)描述一种没有人饿死(永远拿不到筷子)算法。双号学生按奇数号偶数号哲学家分组策略)

 


semaphore chopstick[i]={11111}//五双筷子 do{ if i%2==0//进行偶数哲学家进程 { wait(chopstick[(i+1)%5];//拿右筷子 wait(chopstick[i]);//拿左筷子 eat();//吃饭 signal(chopstick[(i+1)%5]); signal(chopstick[i]); think();//思考 }else{//奇数哲学家进程 wait(chopstick[i]);//拿左筷子 wait(chopstick[(i+1)%5];//拿右筷子 eat();//吃饭 signal(chopstick[i]); signal(chopstick[(i+1)%5]); think();//思考 } }while(true);

 

posted @ 2022-04-11 20:12  YUYUUUU  阅读(40)  评论(0编辑  收藏  举报