避免死鎖的方法中,允許程序動態地申請資源,但系統在進行資源分配之前,應先計算此次資源分配的安全性。若此次分配不會導致系統進入不安全狀態,則將資源分配給程序; 否則,讓程序等待。
安全狀態
所謂安全狀態,是指系統能按某種程序推進順序( 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 釋放資源。系統中的可重用資源數目都是相對固定的程式執行時不能增加或...