银行家算法(Python语言描述)

版权声明:若需要转载,请标明原文地址。 https://blog.csdn.net/qq_41903671/article/details/89418218
C:\Users\minghaohao>python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> safeList = []
>>> Available = np.array([3,3,2])
>>> Allocation = np.array([[0,1,0],[2,0,0],[3,0,2],[2,1,1],[0,0,2]])
>>> Need = np.array([[7,4,3],[1,2,2],[6,0,0],[0,1,1],[4,3,1]])
>>> work = Available
>>> Finish = [False]*5
>>> while False in Finish:
...     for i in range(0,5):
...         if(Finish[i] == False) and ((Need[i] <= work).all()):
...             for m in range(3):
...                 work[m] = work[m] + Allocation[i][m]
...             Finish[i] = True
...             safeList.append(i)
...
>>> print(safeList)
[1, 3, 4, 0, 2]
>>>

Numpy

一个运行速度非常快的数学库,主要用于数组计算
创建一个数组:np.array([3,3,2])

名词解释

Available:系统中可利用资源总数
Max:某个进程对于某个资源的最大使用量
Allocation:当前时刻这些进程已经分配到的资源瞬目
Need:这个进程还需要多少资源
safeList:安全序列
Request:各进程对资源的请求
Request_name:进程的名称

work向量和Finish向量

work[i]表示第i个资源还能分配多少,Finish[i]表示第i个进程是否可以安全的运转结束。
初始时,Finish全部为False。

涉及的方法

all()方法用于判断给定的参数中所有元素是否都为True,如果是返回True,否则返回False。元素除了0、空、None、False外都算True。

猜你喜欢

转载自blog.csdn.net/qq_41903671/article/details/89418218