python对于银行家算法的实现

博主在操作系统课程设计中需实现银行家算法,给出了最基础的Python代码实现,还表示若要增加划分不同资源种类等功能,可在此代码基础上改进,并展示了运行结果。

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

python对于银行家算法的实现

近段时间在搞操作系统的课程设计,其中要求做一个银行家算法,下面的代码是一个最基础的算法实现,如果想要增加功能比如划分不同的资源种类,可以再此代码上进行改进。

pcb=[]
n=int(input('请输入你的进程数:'))
Available = int(input("请输入系统已有的资源数"))

#输入函数
def inputFun():
    i = 0
    
    while(i<n):
        print("--------------------------------")
        pName = input("请输入第%d个进程名:"%(i+1))
        Max = int(input("请输入该进程运行所需的资源数"))
        Allocation = int(input("请输入该进程已有的资源数"))
        Finish = "false"
        Need = Max - Allocation
        
        pcb.append([pName,Max,Allocation,Need,Finish])
        i+=1

#银行家算法:   
def BA():
    ba_pcb = pcb
    ba_Available=Available
    ba_pcb.sort(key = lambda x:x[3],reverse = False)#对进程的所需资源数进行降序排序
    i = 0
    while(i<n):
        if(ba_Available>ba_pcb[i][3]):
            ba_Available+=ba_pcb[i][2]
            ba_pcb[i][4] = "true"
            print("--------------------------------")
            print("进程%s向系统申请资源."%ba_pcb[i][0])
            print("进程%s已运行结束."%ba_pcb[i][0])
            print("进程%s向系统释放资源."%ba_pcb[i][0])
            print("当前系统已有的资源数为%d."%ba_Available)
            i+=1
            if(i == n):
                print("--------------------------------")
                print("当前系统是安全的.")
        else:
            print("--------------------------------")
            printf("系统无法满足任何进程的资源申请.")
            printf("系统当前状态是不安全的.")
            break
            
if __name__ =='__main__':
    inputFun()
    BA()

运行结果如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值