Python3实现银行家算法、安全性算法
学习期间写的,希望大家一起进步。
Available = []
Used ={}
Need = {}
zhan = []
order = []
pandaun = []
def compare(a = [],b = []):
for x in range(0,item):
if (int(a[x]) < int(b[x])):
return False
break
return True
def AddUsed(a = [],b = []):
for x in range(0,item):
a[x] = int(a[x]) + int(b[x])
item = int(input("请输入资源种类数: "))
SP = int(input("请输入进程数: "))
jinchengshu = SP
for x in range(1,item+1):
Available.append(input("请输入第"+str(x)+"种资源的可用数目: "))
for x in range(1,SP+1):
name = input("请输入第"+str(x)+"个进程名称: ")
print("该进程占有的"+str(item)+"类资源数为:")
for y in range(1,item+1):
zhan.append(int(input()))
Used[name] = zhan
zhan = []
print("该进程需要的"+str(item)+"类资源数为:")
for z in range(1,item+1):
zhan.append(int(input()))
Need[name] = zhan
zhan = []
while Need:
for key in Need:
zhan = Need[key]
if compare(Available,zhan):
AddUsed(Available,Used[key])
order.append(key)
a = key
break
if compare(Available,zhan):
del Need[a]
jinchengshu -= 1
if SP == jinchengshu:
print("不存在安全序列!!!")
break
if jinchengshu == 0:
for x in range(0,len(order)):
print(order[x]+'-->',end='')
print("END!")