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