死鎖
死鎖概念
相鄰的哲學家不能同時喫飯,他們會徵用他們中間的筷子。
取筷子是P操作,放筷子是V操作。筷子是信號量。
如果所有哲學家都拿起左手邊的筷子,那麼就會全部阻塞在取右手邊的筷子。
這就發生了死鎖。
死鎖起因
生產者拿到了mutex,但是阻塞在empty。其它的生產者和消費者無法獲取mutex,全部阻塞。死鎖。
死鎖預防策略
死鎖的必要條件
解決死鎖的策略
- 預防死鎖
- 避免死鎖
- 檢測死鎖
- 恢復死鎖
有多個進程,其中一定存在這樣的進程,它擁有最大序號資源,這個最大序號資源是最後一個資源,運行完歸還系統。這個進程運行完這個資源後邊還需要資源,當前資源序號就不是最大序號。
操作系統認爲死鎖不會發生,即便發生也流感用戶處理。
問題複雜,處理的效益不高。
進程調度
進程調度概念
1,2矛盾;1,3矛盾;2,5矛盾;等等。
典型調度算法
使用cpu超過一定時長時,可以認爲它偏計算,降低其優先數,讓他在後臺慢慢運行
進行I/O後,很可能還會I/O,可以認爲此進程偏I/O,用戶需要良好的交互性,提高其優先數
進程等待時間過長時提高優先數,避免飢餓
Linux進程調度