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