作業系統面試(死鎖)

2021-09-24 23:00:12 字數 1942 閱讀 4183

[外鏈轉存失敗(img-vs8tclxs-1562162502867)(

主要有以下四種方法:

把頭埋在沙子裡,假裝根本沒發生問題。

因為解決死鎖問題的代價很高,因此鴕鳥策略這種不採取任務措施的方案會獲得更高的效能。

當發生死鎖時不會對使用者造成多大影響,或發生死鎖的概率很低,可以採用鴕鳥策略。

大多數作業系統,包括 unix,linux 和 windows,處理死鎖問題的辦法僅僅是忽略它。

不試圖阻止死鎖,而是當檢測到死鎖發生時,採取措施進行恢復。

[外鏈轉存失敗(img-0ycadv9m-1562162502867)(

上圖為資源分配圖,其中方框表示資源,圓圈表示程序。資源指向程序表示該資源已經分配給該程序,程序指向資源表示程序請求獲取該資源。

圖 a 可以抽取出環,如圖 b,它滿足了環路等待條件,因此會發生死鎖。

每種型別乙個資源的死鎖檢測演算法是通過檢測有向圖是否存在環來實現,從乙個節點出發進行深度優先搜尋,對訪問過的節點進行標記,如果訪問了已經標記的節點,就表示有向圖存在環,也就是檢測到死鎖的發生。

[外鏈轉存失敗(img-rolydtqi-1562162502867)(

上圖中,有三個程序四個資源,每個資料代表的含義如下:

程序 p1 和 p2 所請求的資源都得不到滿足,只有程序 p3 可以,讓 p3 執行,之後釋放 p3 擁有的資源,此時 a = (2 2 2 0)。p2 可以執行,執行後釋放 p2 擁有的資源,a = (4 2 2 1) 。p1 也可以執行。所有程序都可以順利執行,沒有死鎖。

演算法總結如下:

每個程序最開始時都不被標記,執行過程有可能被標記。當演算法結束時,任何沒有被標記的程序都是死鎖程序。

尋找乙個沒有標記的程序 pi,它所請求的資源小於等於 a。

如果找到了這樣乙個程序,那麼將 c 矩陣的第 i 行向量加到 a 中,標記該程序,並轉回 1。

如果沒有這樣乙個程序,演算法終止。

在程式執行之前預防發生死鎖

如假離線印表機技術允許若干個程序同時輸出,唯一真正請求物理印表機的程序是印表機守護程序。

一種實現方式是規定所有程序在開始執行前請求所需要的全部資源

給資源統一編號,程序只能按編號順序來請求資源。

在程式執行時避免發生死鎖。

[外鏈轉存失敗(img-7hvhlgsg-1562162502867)(

圖 a 的第二列 has 表示已擁有的資源數,第三列 max 表示總共需要的資源數,free 表示還有可以使用的資源數。從圖 a 開始出發,先讓 b 擁有所需的所有資源(圖 b),執行結束後釋放 b,此時 free 變為 5(圖 c);接著以同樣的方式執行 c 和 a,使得所有程序都能成功執行,因此可以稱圖 a 所示的狀態時安全的。

定義:如果沒有死鎖發生,並且即使所有程序突然請求對資源的最大需求,也仍然存在某種排程次序能夠使得每乙個程序執行完畢,則稱該狀態是安全的。

安全狀態的檢測與死鎖的檢測類似,因為安全狀態必須要求不能發生死鎖。下面的銀行家演算法與死鎖檢測演算法非常類似,可以結合著做參考對比。

乙個小城鎮的銀行家,他向一群客戶分別承諾了一定的貸款額度,演算法要做的是判斷對請求的滿足是否會進入不安全狀態,如果是,就拒絕請求;否則予以分配。

[外鏈轉存失敗(img-rmafdvhn-1562162502868)(

上圖 c 為不安全狀態,因此演算法會拒絕之前的請求,從而避免進入圖 c 中的狀態

[外鏈轉存失敗(img-wy8a6say-1562162502868)(

上圖中有五個程序,四個資源。左邊的圖表示已經分配的資源,右邊的圖表示還需要分配的資源。最右邊的 e、p 以及 a 分別表示:總資源、已分配資源以及可用資源,注意這三個為向量,而不是具體數值,例如 a=(1020),表示 4 個資源分別還剩下 1/0/2/0。

檢查乙個狀態是否安全的演算法如下:

如果乙個狀態不是安全的,需要拒絕進入這個狀態

的行,那麼系統將會發生死鎖,狀態是不安全的。

如果乙個狀態不是安全的,需要拒絕進入這個狀態

作業系統死鎖

作業系統死鎖,在作業系統課程當中屬於比較關注的乙個知識點,在這裡做個簡單的梳理。死鎖的四個必要條件 作業系統中有若干程序併發執行,它們不斷申請 使用 釋放系統資源,雖然系統的進 程協調 通訊機構會對它們進行控制,但也可能出現若干程序都相互等待對方釋放資源才能 繼續執行,否則就阻塞的情況。此時,若不借...

作業系統 死鎖

多執行緒以及多程序改善了系統資源的利用率並提高了系統 的處理能力。然而,併發執行也帶來了新的問題 死鎖。死鎖是指多個程序在執行過程中因爭奪資源而造成的一種僵局,當前程序處於這種狀態時,若無外力作用,它們都將無法再向前推進。關於死鎖的一些結論 競爭資源 當系統中供多個程序共享的資源如印表機 公用佇列等...

作業系統 死鎖

把需要排他性使用的物件稱為資源。資源可以是硬體也可以是軟體,比如印表機或者資料庫中的乙個加鎖記錄。資源可以分為兩類 可搶占資源和不可搶占資源。搶占這個詞,在程序和執行緒排程時就提到了這個概念,那時是程序或者執行緒可以搶占cpu,即搶占式排程。儲存器也可以搶占,如記憶體換頁。一般來說,可搶占資源不會引...