死鎖的原因及解決方法,死鎖的原因及解決辦法
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、終止(或撤銷)進程,終止(或撤銷)系統中的一個或多個死鎖進程,直至打破循環環路,使系統從死鎖狀態解脫出來.
-
跳繩1000下消耗多少卡路里
跳繩是現在很多女性朋友比較喜歡的運動,不但能強身健體,而且還有減肥效果。跳繩是一項有氧運動,連續性跳繩的主要能源是脂肪而不是糖類,所以,可以燃燒掉體內的大量脂肪,對減肥、降血脂具有積極作用。跳繩還可以讓血液獲得更多的氧氣,使心血管系統保持強壯和健康。每個...
-
手機相冊很多垃圾圖片
我們使用手機去瀏覽網頁,或者是刷微博以及微信的時候,都會加載一些網頁,而且有些圖片還會自動下載保存到手機相冊裏面,這就是爲什麼我們的手機相冊總是會莫名的多出一些垃圾圖片的原因。如果我們的手機下載了非官網渠道的APP,這種APP軟件會出現無用圖片,會在相冊中保...
-
蘋果6s沒有插耳機卻顯示耳機模式怎麼辦
蘋果6s顯示耳機模式,有兩大原因,一是手機硬件出了故障,硬件則是耳機插座進灰或進水等造成的接觸不良;二是蘋果手機系統設置方面要進行更改,系統在某些情況下有可能識別耳機模式出錯。如果是蘋果6s硬件出了問題,那可能是耳機插孔金屬片走位,用筆芯撥一下耳機插孔,將裏面...
-
微博如何屏蔽廣告
微博裏面經常出現廣告是一件很煩心的事情,不過,有很多的方法可以屏蔽微博廣告。首先打開自己的微博,進入微博首頁,然後找到自己不喜歡看的微博廣告,在右側有一個倒三角的按鈕,點擊進入,我們點擊想要屏蔽的經常發廣告的微博,然後點擊確定就可以了。也可以屏蔽來自某個客...