1. 程式人生 > 其它 >作業系統2022-4-11(1)

作業系統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);