死鎖檢測和恢復


在這種方法中,OS不應用任何機制來避免或防止死鎖。 因此,系統認為死鎖肯定會發生。 為了擺脫死鎖,OS定期檢查系統是否存在死鎖。 如果發現死鎖,作業系統將使用一些恢復技術來恢復系統。

作業系統的主要任務是檢測死鎖。 作業系統可以藉助資源分配圖來檢測死鎖。

在單個範例化的資源型別中,如果系統中正在形成一個迴圈,那麼肯定會出現死鎖。 另一方面,在多範例資源型別圖中,檢測週期不夠。 我們必須通過將資源分配圖轉換為分配矩陣和請求矩陣來在系統上應用安全演算法。

為了從死鎖中恢復系統,任一作業系統都會考慮資源或進程。

對於資源

搶佔資源

我們可以從資源所有者(進程)中獲取其中一個資源,並將其交給另一個進程,並期望它能夠完成執行,並且會盡快釋放該資源。 那麼,選擇一個將被搶走的資源將會有點困難。

回滾到安全狀態

系統通過各種狀態進入死鎖狀態。 作業系統將系統回滾到以前的安全狀態。 為此,作業系統需要在每個狀態下執行檢查指標。

現在,我們陷入死鎖,將回滾所有分配以進入之前的安全狀態。

對於進程

殺死一個進程

殺死一個進程可以解決問題,但更重要的是要決定要殺死哪個進程。 一般來說,作業系統殺死一個迄今為止工作量最少的進程。

殺死所有進程

這不是一個可以接受的方法,但如果問題變得非常嚴重,可以實施。 殺死所有進程將導致系統效率低下,因為所有進程將從頭開始重新執行。