python银行家算法_银行家算法 Python实现

这篇博客介绍了如何使用Python实现银行家算法,包括输入系统资源、进程需求和已分配资源,然后进行资源请求和安全性检查,最终判断系统是否处于安全状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import random as rm

m = eval(input("请输入所要创建进程的个数:"))

n = eval(input("请输入系统资源种类数:"))

max1 = [[0 for j in range(n)]for i in range(m)]

allocation = [[0 for j in range(n)] for i in range(m)]

need = [[0 for j in range(n)] for i in range(m)]

request = [[0 for j in range(m)] for i in range(n)]

finish = [False for i in range(m)]

work = [0 for i in range(n)]

st1 = [0 for i in range(m)]

available = input("请输入系统初始n类资源数目:").split()

for i in range(n):

available[i] = int(available[i])

print("请依次输入m个进程的所需最大资源数目:")

for i in range(m):

max1[i] = input().split()

for j in range(n):

max1[i][j] = int(max1[i][j])

print("请依次输入m个进程已分配相应资源数目:")

for i in range(m):

allocation[i] = input().split()

for j in range(n):

allocation[i][j] = int(allocation[i][j])

need[i][j] = max1[i][j] - allocation[i][j]

print(available)

print("请输入所要请求资源的进程代码")

re_member = input()

re_member = int(re_member)

list1 = input("请输入进程相应进程的n维请求向量:").split()

for i in range(n):

list1[i] = int(list1[i])

for i in range(n):

if list1[i] > available[i]:

print("系统现无足够资源,该进程须等待")

break

for i in range(n):

# 分配进程号为re_member资源

available[i] = available[i]-list1[i]

allocation[re_member][i] = allocation[re_member][i]+list1[i]

need[re_member][i] = need[re_member][i]-list1[i]

work = available

# 安全性算法检查

print(work)

j = 0

si = 0

while j < m:

if finish[j] is False and need[j] <= work:

work = [work[i] + allocation[j][i] for i in range(n)]

finish[j] = True

st1[si] = j

si = si + 1

j = 0

else:

j = j + 1

for i in range(m):

if finish[i] is False:

st1 = [0 for i in range(m)]

si = 0

work = available

break

else:

continue

flag = True

for i in range(m):

if finish[i] is False:

flag = False

break

if flag is True:

print("存在安全系列:")

print(st1)

else:

print("系统处于不安全状态")

6998ab596eed3605f6b06555ab6e6fde.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值