python对于银行家算法的实现

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()

运行结果如下
python对于银行家算法的实现_第1张图片

你可能感兴趣的:(操作系统)