i
cludestdiohi
cludestdlibhi
cludeco
iohdefi
eM5defi
eN3进程数资源数
defi
etrue1defi
efalse0
系统可用资源向量i
tAvailableN332最大需求向量i
tMaxN753322902222433
f资源分配向量i
tAllocatio
N010200302211002需求向量i
tNeedN743122600011431比较两个一维数组判断abi
tcomparei
tai
tbi
t
fi
ti0fori0i
iifaibiretur
falseretur
true一维数组加法aabvoidaddi
tai
tbi
t
i
ti0fori0i
iaibi
f一维数组减法aabvoidsubtracti
tai
tbi
t
i
ti0fori0i
iaibi将数组b的值赋给a,
为数组的大小voidassig
i
tai
tbi
t
i
ti0fori0i
iaibi判断是否是安全状态av可用资源矩阵sl记录安全路径
fi
tsafei
tsli
tii
tcou
t0i
t
0i
tworkNi
tfi
ishworkavassig
workAvailableN初始化标记fi
ishfori0iMifi
ishifalse记录fi
ishitrue的个数
为进程的个数循环最多执行
次
Mwhile
fori0iMi
f判断是否安全ifcou
tM全部进程都可安全执行(fi
ishtrue)retur
true
判断能否满足进程i的要求workNeediiffi
ishifalsecompareworkNeediN分配,待进程完成后再释放addworkAllocatio
iNfi
ishitrue记录安全路径slcou
ti能满足的进程数1cou
tifcou
tM
fretur
trueelseretur
false请求分配pid进程,r请求向量,
资源个数i
trequesti
tpidi
tri
t
i
ti记录安全路径i
tsl5ifcompareNeedpidr
truecompareAvailabler
尝试分配资源subtractAvailablerNaddAllocatio
pidrNsubtractNeedpidrN
f判断是否是安全状态ifsafesl打印安全路径pri
tf