死鎖預防
死鎖預防
死鎖預防是計算機操作系統,在設計時確定資源分配演演算法,為保證不發生死鎖,而破壞產生死鎖的必要條件的行為過程。
、互斥件 資源配程,空閑。
、占請求件 配資源程申請資源
、剝奪件 配某程資源剝奪,占程完釋
4、循環等待條件 系統必然存在一條有兩個或兩個以上的進程組成的循環,聯眾的每一個進程都在等待相鄰進程所佔用的資源
就是在系統里取消互斥。若資源不被一個進程獨佔使用,那麼死鎖是肯定不會發生的。
但一般來說在所列的四個條件中,“互斥”條件是無法破壞的。因此,在死鎖預防里主要是破壞其他幾個必要條件,而不去涉及破壞“互斥”條件。
破壞“佔有並等待”條件,就是在系統中不允許進程在已獲得某種資源的情況下,申請其他資源。即要想出一個辦法,阻止進程在持有資源的同時申請其他資源。
方法一:
創建進程時,要求它申請所需的全部資源,系統或滿足其所有要求,或什麼也不給它。這是所謂的“一次性分配”方案。
方法二:
要求每個進程提出新的資源申請前,釋放它所佔有的資源。這樣,一個進程在需要資源S時,須先把它先前佔有的資源R釋放掉,然後才能提出對S的申請,即使它可能很快又要用到資源R。
破壞“不可搶佔”條件就是允許對資源實行搶奪。
方法一:如果佔有某些資源的一個進程進行進一步資源請求被拒絕,則該進程必須釋放它最初佔有的資源,如果有必要,可再次請求這些資源和另外的資源。
方法二:如果一個進程請求當前被另一個進程佔有的一個資源,則操作系統可以搶佔另一個進程,要求它釋放資源。只有在任意兩個進程的優先順序都不相同的條件下,方法二才能預防死鎖。
破壞“循環等待”條件的一種方法,是將系統中的所有資源統一編號,進程可在任何時刻提出資源申請,但所有申請必須按照資源的編號順序(升序)提出。這樣做就能保證系統不出現死鎖。