操作系統筆記——3.5-3.8死鎖

第三章處理機調度與死鎖

3.1處理機調度的層次和調度算法的目標
3.2作業與作業調度
3.3進程調度
3.4實時調度
3.5死鎖概述
3.6預防死鎖.
3.7避免死鎖
3.8死鎖的檢測與解除

一. 什麼是死鎖?
如果一個進程集合裏面的每個進程都在等待這個集合中的其他一個進程(包括自身)才能繼續往下執行,若無外力他們將無法推進,這種情況就是死鎖,處於死鎖狀態的進程稱爲死鎖進程
二. 死鎖產生的原因?
1.因競爭資源發生死鎖
現象:系統中供多個進程共享的資源的數目不足以滿足全部進程的需要時,就會引起對諸資源的競爭而發生死鎖現象
(1)可剝奪資源和不可剝奪資源:
可剝奪資源是指某進程在獲得該類資源時,該資源同樣可以被其他進程或系統剝奪,不可剝奪資源是指當系統把該類資源分配給某個進程時,不能強制收回,只能在該進程使用完成後自動釋放
(2)競爭不可剝奪資源:系統中不可剝奪資源的數目不足以滿足諸進程運行的要求,則發生在運行進程中,不同的進程因爭奪這些資源陷入僵局。 舉例說明: 資源A,B; 進程C,D 資源A,B都是不可剝奪資源:一個進程申請了之後,不能強制收回,只能進程結束之後自動釋放。內存就是可剝奪資源 進程C申請了資源A,進程D申請了資源B。 接下來C的操作用到資源B,D的資源用到資源A。但是C,D都得不到接下來的資源,那麼就引發了死鎖。
(3)競爭臨時資源
2.進程推進順序不當發生死鎖
三. 產生死鎖的四個必要條件?
(1)互斥條件:進程對所分配到的資源不允許其他進程進行訪問,若其他進程訪問該資源,只能等待,直至佔有該資源的進程使用完成後釋放該資源
(2)請求和保持條件:進程獲得一定的資源之後,又對其他資源發出請求,但是該資源可能被其他進程佔有,此事請求阻塞,但又對自己獲得的資源保持不放
(3)不可剝奪條件:是指進程已獲得的資源,在未完成使用之前,不可被剝奪,只能在使用完後自己釋放 (4)環路等待條件:是指進程發生死鎖後,必然存在一個進程–資源之間的環形鏈
四. 處理死鎖的基本方法
1.預防死鎖:通過設置一些限制條件,去破壞產生死鎖的必要條件
2.避免死鎖:在資源分配過程中,使用某種方法避免系統進入不安全的狀態,從而避免發生死鎖
3.檢測死鎖:允許死鎖的發生,但是通過系統的檢測之後,採取一些措施,將死鎖清除掉
4.解除死鎖:該方法與檢測死鎖配合使用

總結

一:產生死鎖的原因
對資源的競爭;
進程推進順序不當;
二:產生死鎖的四個必要條件
互斥條件、請求與保持條件、不剝奪條件和環路等待條件
三:處理死鎖的基本方法
“預防死鎖,避免死鎖,檢測死鎖,解除死鎖”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章