目录
目标
本文章采用银行家算法模拟进程动态分配申请资源;并用安全性算法检验资源分配以后系统是否处于安全状态(是否存在安全序列)。
具体设计:
要求:
1.设计有 n 个进程共享 m 个系统资源的系统,进程可动态的申请和释放资源,系统按各进程的申请动态的分配资源。
2.系统能显示各个进程申请和释放资源,以及系统动态分配资源的过程,便于用户观察和分析;.
分析:
每个进程在进入系统时,都必须申请运行过程中各种资源所需的最大数目,且该数目不应超过系统所拥有的,当进程请求一组资源时,系统要先确定是否有足够的资源分配,若有,则进一步计算分配之后系统是否会处于不安全状态,如果不会,则可将资源分配,否则等待。
银行家算法bank():
设置四个数据结构Available[],Max[][],Allocation[][],Need[][];
其中:Need[i][j]=Max[i][j]-Allocation[i][j];
if:Requesti[j]<Need[i,j]
if:Requesti[j]<Available[j]
Available[j]=Available[j]-Requesti[j];
Allocation[i,j]=Allocation[i,j]+Requesti[j];
Need[i,j]=Need[i,j]-Requesti[j];
安全性算法checkSecurity();
安全性算法
设置两个向量。work[]和Finish[]
初始化:work[]=Available[];Finish[]=FALSE
if:Finish[i]=0&&Need[i,j]<=work[j]
Work[j]=Work[j]+Allocation[i,j];
Finish[]=1;
if :所有的Finish[]=1,系统处于安全状态。
实现步骤:
。。。。
代码实现:
。。。。
运行截图: