數據結構
假設有M個進程N類資源,則有如下數據結構:
MAX[M*N] M個進程對N類資源的最大需求量
AVAILABLE[N] 系統可用資源數
ALLOCATION[M*N] M個進程已經得到N類資源的資源量
NEED[M*N] M個進程還需要N類資源的資源量
2.銀行家算法
設進程I提出請求Request[N],則銀行家算法按如下規則進行判斷。
(1)如果Request[N]<=NEED[I,N],則轉(2);否則,出錯。
(2)如果Request[N]<=AVAILABLE,則轉(3);否則,出錯。
(3)系統試探分配資源,修改相關數據:
AVAILABLE=AVAILABLE-REQUEST
ALLOCATION=ALLOCATION+REQUEST
NEED=NEED-REQUEST
(4)系統執行安全性檢查,如安全,則分配成立;否則試探險性分配作廢,系統恢復原狀,進程等待。
3.安全性檢查
(1)設置兩個工作向量WORK=AVAILABLE;FINISH[M]=FALSE
(2)從進程集合中找到一個滿足下述條件的進程,
FINISH[i]=FALSE
NEED<=WORK
如找到,執行(3);否則,執行(4)
(3)設進程獲得資源,可順利執行,直至完成,從而釋放資源。
WORK=WORK+ALLOCATION
FINISH=TRUE
GO TO 2
(4)如所有的進程Finish[M]=true,則表示安全;否則系統不安全。
標簽:
數據結構
進程
資源
上傳時間:
2013-12-24
上傳用戶:alan-ee