阿摩線上測驗 登入

申論題資訊

試卷:95年 - 95 一般警察特種考試_二等_刑事警察人員犯罪分析組:計算機概論(包括計算機結構、資料結構、程式設計)#33730
科目:計算機概論
年份:95年
排序:0

申論題內容

三、什麼叫做死結(Deadlock)?請描述一移除死結的方法。(15 分)

詳解 (共 1 筆)

詳解 提供者:hchungw

 

鎖死(Deadlock)是在併發計算中出現的一種資源競爭情況,其中兩個或多個進程彼此等待對方所持有的資源,導致它們永遠無法繼續執行。通常,鎖死發生在以下條件同時滿足時:

 

互斥:資源只能被一個進程使用。

佔有並等待:一個進程持有至少一個資源,並且正在等待另一個進程持有的資源。

非搶佔:資源不能被強制從持有它的進程中搶奪。

迴圈等待:存在一個進程鏈,每個進程都在等待下一個進程所持有的資源。

移除鎖死的方法主要有以下幾種:

 

預防鎖死:通過打破鎖死產生的四個條件中的一個或多個來預防鎖死。例如,避免迴圈等待,可以規定進程只能按照特定的順序請求資源,從而破壞迴圈等待條件。

 

避免鎖死:在資源配置的過程中採取一些策略以避免進入鎖死狀態。常用的方法是使用銀行家演算法等資源配置演算法,動態地分配資源以避免發生鎖死。

 

檢測與恢復:允許鎖死發生,但是定期檢測系統中是否有鎖死,一旦檢測到鎖死,就採取一些措施來恢復。恢復的方法可以是終止某些進程、回滾操作、或者動態地分配資源來解除鎖死。

 

避免鎖死的特殊演算法:除了銀行家演算法外,還有一些專門設計用來避免鎖死的演算法,如資源配置圖演算法等。

 

資源剝奪:當檢測到鎖死發生時,系統可以選擇剝奪部分或全部鎖死進程所持有的資源,以解除鎖死。這種方法可能會導致資源的浪費和性能下降,因此應謹慎使用。

 

選擇哪種方法取決於系統的需求、性能要求和可接受的複雜度。通常情況下,鎖死預防和避免是首選方法,因為它們能夠在系統設計的早期就有效地解決問題,而檢測與恢復和資源剝奪則是在鎖死已經發生時採取的措施。