死鎖的原因及解決方法
1、 死鎖是由於兩個或以上的執行緒互相持有對方需要的資源,導致這些執行緒處於等待狀態,無法執行。
2、產生死鎖的四個必要條件互斥性:執行緒對資源的佔有是排他性的,一個資源只能被一個執行緒佔有,直到釋放。請求和保持條件:一個執行緒對請求被佔有資源發生阻塞時,對已經獲得的資源不釋放。不剝奪:一個執行緒在釋放資源之前,其他的執行緒無法剝奪佔用。迴圈等待:發生死鎖時,執行緒進入無窮迴圈,永久阻塞。
3、產生死鎖的原因競爭不可搶佔性資源,p1已經開啟F1,想去開啟F2,p2已經開啟F2,想去開啟F1,但是F1和F2都是不可搶佔的,這是發生死鎖。
4、競爭可消耗資源引起死鎖,程序間通訊,如果順序不當,會產生死鎖,比如p1發訊息m1給p2,p1接收p3的訊息m3,p2接收p1的m1,發m2給p3,p3,以此類推,如果程序之間是先發資訊的那麼可以完成通訊,但是如果是先接收資訊就會產生死鎖。
5、程序推進順序不當,程序在執行過程中,請求和釋放資源的順序不當,也同樣會導致產生程序死鎖。
6、避免死鎖的方法破壞“請求和保持”條件想辦法,讓程序不要那麼貪心,自己已經有了資源就不要去競爭那些不可搶佔的資源。比如,讓程序在申請資源時,一次性申請所有需要用到的資源,不要一次一次來申請,當申請的資源有一些沒空,那就讓執行緒等待。不過這個方法比較浪費資源,程序可能經常處於飢餓狀態。還有一種方法是,要求程序在申請資源前,要釋放自己擁有的資源。
7、破壞“不可搶佔”條件,允許程序進行搶佔,方法一:如果去搶資源,被拒絕,就釋放自己的資源。方法二:作業系統允許搶,只要你優先順序大,可以搶到。
8、破壞“迴圈等待”條件將系統中的所有資源統一編號,程序可在任何時刻提出資源申請,但所有申請必須按照資源的編號順序(升序)提出
9、死鎖的檢測每個程序、每個資源制定唯一編號。設定一張資源分配表,記錄各程序與佔用資源之間的關係。設定一張程序等待表,記錄各程序與要申請資源之間的關係。
10、死鎖的解除搶佔資源,從一個或多個程序中搶佔足夠數量的資源,分配給死鎖程序,以解除死鎖狀態。
11、終止(或撤銷)程序,終止(或撤銷)系統中的一個或多個死鎖程序,直至打破迴圈環路,使系統從死鎖狀態解脫出來.
-
淘寶上買的東西地址填錯了怎麼辦
當我們在淘寶購物選好自己想買的東西后下單時需要為商家提供地址,雖然說現在都有之前填寫過的收貨地址基本上只需要自己選擇一下就可以,但是有時自己難免大意將地址選錯,那麼選錯了地址以後應該怎麼辦呢?郵遞前:當發現自己地址填錯後,儘快的聯絡一下賣家,可以取消訂單...
-
查詢蘋果手機序列號的方法
1、首先開啟設定,選擇通用點選關於本機,然後長按序列號,點選拷貝,返回桌面。2、開啟safari,接著進入蘋果官網,點選左上角的兩道槓圖示,點選技術支援,點選搜尋支援框,點選快速連結的保修狀態查詢,最後輸入序列號,輸入驗證碼,點選繼續即可檢視。...
-
電腦啟動不起來是什麼原因
1、首先可能是電源出現問題導致啟動不起來,建議檢查電源。2、主機內部電路損壞,建議找專業人員維修。3、風扇的轉速以及平穩性不好,導致散熱不好,主機無法啟動。4、CUP損壞後也會出現此現象,CPU損壞無法通過自檢,計算機無法啟動。...
-
手機相簿很多垃圾圖片
我們使用手機去瀏覽網頁,或者是刷微博以及微信的時候,都會載入一些網頁,而且有些圖片還會自動下載儲存到手機相簿裡面,這就是為什麼我們的手機相簿總是會莫名的多出一些垃圾圖片的原因。如果我們的手機下載了非官網渠道的APP,這種APP軟體會出現無用圖片,會在相簿中保...