第五章 死鎖
1.死鎖的產生
領會死鎖的定義
在多道程式系統中,一組程序中的每乙個程序均無限期地等待被該組程序中的另乙個程序所占有且永遠不會釋放的資源
死鎖產生的原因
競爭資源,系統資源在分配時出現失誤,程序間對資源的相互爭奪所造成僵局
多道程式執行時,程序推進順序不合理
死鎖產生的必要條件
互斥條件
不可剝奪條件
請求和保持條件
迴圈等待條件
2.死鎖預防
領會死鎖預防的概念
在任何系統操作前,事先評估系統的可能情況,嚴格採取措施使得死鎖的四個必要條件不成立
資源的靜態分配策略
乙個程序在申請新資源的要求不能立即得到滿足時,便處於等待狀態。而乙個處於等待狀態的程序的全部資源可以被剝奪
資源的有序分配法
將系統中所有資源順序編號,較為緊缺、稀少的資源的編號較大。乙個程序只能得到編號較小的資源,才能申請編號較大的資源;釋放資源時,硬按編號遞減的次序進行
3.死鎖避免
綜合應用
死鎖避免的概念
系統對程序發出的每乙個系統能夠滿足的資源申請進行動態檢查,並根據檢查結果決定是否分配資源;如果分配後系統可能發生死鎖,則不予分配,否則予以分配
安全狀態與安全序列
若果作業系統能保證所有的程序在有限時間內得到需要的全部資源,則稱系統處於「安全狀態」
銀行家演算法
4.死鎖的檢測與解除
簡單應用
死鎖檢測的時機
一次資源分配後
每次排程後
定時器定時執行檢測
某個程序長期位於阻塞態或阻塞程序過多時
死鎖的解除方法
剝奪資源
撤銷程序
5.資源分配圖
簡單應用
資源分配圖
p為程序集合
r為資源集合
資源分配圖
死鎖定理
如果資源分配圖中沒有環路,則系統沒有死鎖
如果資源分配圖**現了環路,可能存在死鎖
如果處於環路中的每個資源類中均只包含乙個資源例項,則環路的存在即意味著死鎖的存在
如果處於環路中的每個資源類中資源例項的個數不全為1,則環路的存在是產生死鎖的必要條件而不是充分條件
資源分配圖化簡方法
在資源分配圖中,找出乙個既非等待又非鼓勵的程序節點p,由於pi可獲得它所需要的全部資源,且執行完後釋放它所占用的全部資源,故可在資源分配圖中消去pi所有的申請邊和分配邊,使之成為既五申請邊又無分配邊的孤立結點
將pi所釋放的資源分配給申請它們的程序,即在資源分配圖中將這些程序對資源的申請邊改為分配邊
重複前兩步驟,直到找不到符合條件的程序結點
6.哲學家就餐問題
簡單應用
同時最多只能有4個人進餐
python第五章 Python學習(第五章)
記錄所有的名片字典 card list defshow menu 顯示資訊 print 50 print 歡迎使用 名片管理系統 v1.0 print print 1.新增名片 print 2.顯示全部 print 3.搜尋名片 print print 0.退出系統 print 50 defnew ...
作業系統 第五章 死鎖(一)
死鎖 deadlock 定義 在多道程式中,由於多個併發程序共享系統的資源,如果使用不當可能會造成一種僵局,即當某個程序提出資源的使用請求後,使得系統中一些程序處於無休止的阻塞狀態,在無外力的作用下,這些程序將無法繼續進行下去,這就是死鎖。產生死鎖的環境 1 多道程式設計技術 2 多個併發程序 3 ...
第五章 雜湊
雜湊表adt,只支援二叉樹查詢所允許的一部分操作。比如插入,刪除,查詢等。那些需要元素間排序資訊的操作將不會得到支援。比如findmin,findmax和線性時間按排序順序列印整個表的操作時不支援的。雜湊函式在理想狀態是能將任何兩個不同的關鍵字對映到不同的單元,但是這是不可能,因為關鍵字是無窮的,但...