Linux死鎖避免方法之系統安全狀態

2021-12-30 11:59:39 字數 1092 閱讀 4830

避免死鎖的方法中,允許程序動態地申請資源,但系統在進行資源分配之前,應先計算此次資源分配的安全性。若此次分配不會導致系統進入不安全狀態,則將資源分配給程序; 否則,讓程序等待。

安全狀態

所謂安全狀態,是指系統能按某種程序推進順序( p1, p2, …, pn),為每個程序pi分配其所需資源,直至滿足每個程序對資源的最大需求,使每個程序都可順序地完成。此時稱 p1, p2, …, pn 為安全序列。如果系統無法找到乙個安全序列,則稱系統處於不安全狀態。

假設系統中有三個程序p1、p2和p3,共有12 臺磁帶機。程序p1總共需要10臺磁帶機,p2和p3 分別需要4臺和9臺。假設在t0時刻,程序p1、p2 和p3已分別獲得5合、2臺和2臺,尚有3台未分配,見下表

程序最大需求

已分配可用

p1 10

5 3

p2 4

2  

p3 9

2  解答:

①首先,如果要滿足各程序的最大程序,p1差5臺,p2差2臺,p3差7臺,當前可用資源只有3臺

②將所有程序推進順序的情況一一枚舉:

1.p1 p2 p3

3 < 5,p1沒法完成,不符合

2.p1 p3 p2

3 < 5,p1沒法完成,不符合

3.p2 p1 p3

3 > 2,p2可以完成;

p2完成後釋放資源,可用資源為5臺,5 = 5,p1可以完成;

p1完成後釋放資源,可用資源為10臺,10 > 7,p3可以完成;

所有程序都可以完成,符合

4.p2 p3 p1

3 > 2,p2可以完成;

p2完成後釋放資源,可用資源為5臺,5 < 7,p3沒法完成,不符合

5.p3 p1 p2

3 < 7,p3沒法完成,不符合

6.p3 p2 p1

3 < 7,p3沒法完成,不符合

③綜上,存在乙個安全序列p2 p1 p3,即只要系統按此程序序列分配資源,則每個程序都能順利完成,此時系統便進入安全狀態,否則進入不安全狀態,

並非所有的不安全狀態都是死鎖狀態,但當系統進入不安全狀態後,便可能進入死鎖狀態;反之,只要系統處於安全狀態,系統便可以避免進入死鎖狀態。

Linux死鎖避免方法之系統安全狀態

避免死鎖的方法中,允許程序動態地申請資源,但系統在進行資源分配之前,應先計算此次資源分配的安全性。若此次分配不會導致系統進入不安全狀態,則將資源分配給程序 否則,讓程序等待。所謂安全狀態,是指系統能按某種程序推進順序 p1,p2,pn 為每個程序pi分配其所需資源,直至滿足每個程序對資源的最大需求,...

Linux死鎖避免方法之系統安全狀態

避免死鎖的方法中,允許程序動態地申請資源,但系統在進行資源分配之前,應先計算此次資源分配的安全性。若此次分配不會導致系統進入不安全狀態,則將資源分配給程序 否則,讓程序等待。所謂安全狀態,是指系統能按某種程序推進順序 p1,p2,pn 為每個程序pi分配其所需資源,直至滿足每個程序對資源的最大需求,...

Linux 什麼是死鎖以及如何避免死鎖

介紹死鎖之前,先來說一下作業系統中的資源分類 按照使用次數分類 1 可重用性資源 每乙個可重用資源中的單元只能分配給乙個程序使用,不允許多個執行緒共享。程序使用資源順序 1 請求資源,如果請求失敗程序阻塞或迴圈等待 2 使用資源 3 釋放資源。系統中的可重用資源數目都是相對固定的程式執行時不能增加或...