设Requesti是请求向量,Requesti[j]=K,表示进程需要K个Requesti[j]类型的资源
1:Requesti[j]<=Available[i,j],表示可利用资源足够满足申请的资源
2:Requesti[j]<=Need[i,j],判断进程请求的资源是否超过了它最多需要的资源数目
3:模拟将资源分配给进程,Available[i,j]-=Requesti[j];Need[i,j]-=Requesti[j];Allocation[i,j]+=Requesti[j];
4:进行安全性算法,检测本次资源分配后系统是够处于安全状态,否则就取消本次资源分配。
安全性算法
数据结构
Work,系统可提供给进程运行的各类资源数目,长度为m,在执行安全性算法开始时Work=Available[i,];
Finish,表示系统是够有足够的资源分配给进程,初始值为Finish[i]=false;
算法步骤
1:进程集合中寻找进程满足系统有足够的资源分配给进程,Finish[i]=false,Need[i,j]<=Work[j];
2:当进程获得资源并且执行完毕后释放所有的资源,Work[j]+=Allocation[i,j];Finish[i]=ture;再循环执行步骤一
3:所有进程的Finish[i]=ture,则系统处于安全状态。