📄 osfunction.h
字号:
#include"DataStructure.h"
#include"iostream.h"
void Init(Process P[M],Available &V){ //初始化函数
for(int i=0;i<M;i++)
{
cout<<"请输入第"<<i<<"进程当前情况,先为Need,后为ALLOCATION:"<<endl;
cin>>P[i].N.n_a>>P[i].N.n_b>>P[i].N.n_c>>P[i].N.n_d;
cin>>P[i].L.l_a>>P[i].L.l_b>>P[i].L.l_c>>P[i].L.l_d;
P[i].Finish=false;
}
cout<<"请输入(a-d)各资源可用数,即Available:"<<endl;
cin>>V.v_a>>V.v_b>>V.v_c>>V.v_d;
}
/*void Banker(Process P[M],Available V,Request R){ //银行家算法
if(R.r_a<=V.v_a&&R.r_b<=V.v_b&&R.r_c<=V.v_c&&R.r_d<=V.v_d)
{
V.v_a-=R.r_a;
V.v_b-=R.r_b;
V.v_c-=R.r_c;
V.v_d-=R.r_d;
P[s].L.l_a+=R.r_a;
P[s].L.l_b+=R.r_b;
P[s].L.l_c+=R.r_c;
P[s].L.l_d+=R.r_d;
P[s].L.l_a-=R.r_a;
P[s].L.l_b-=R.r_b;
P[s].L.l_c-=R.r_c;
P[s].L.l_d-=R.r_d;
}
}*/
bool Subsecurity(Process P[M],Available V){ //子安全性分析
int i=0;
int flag=0;
int tap=0;
while(i<M){
if(P[i].Finish==false&&P[i].N.n_a>V.v_a&&P[i].N.n_b>V.v_b&&P[i].N.n_c>V.v_c&&P[i].N.n_d>V.v_d){
flag++;
i++;
}
else
i++;
}
for(i=0;i<M;i++)
if(P[i].Finish==false)
tap++;
if(flag==tap)
return true;
else
return false;
}
bool Security(Process P[M],Available V){ //安全性分析
int sign=0;
while(sign!=M){
for(int i=0;i<M;i++){
if(P[i].Finish==false&&P[i].N.n_a<=V.v_a&&P[i].N.n_b<=V.v_b&&P[i].N.n_c<=V.v_c&&P[i].N.n_d<=V.v_d){
V.v_a=V.v_a+P[i].L.l_a;
V.v_b=V.v_b+P[i].L.l_b;
V.v_c=V.v_c+P[i].L.l_c;
V.v_d=V.v_d+P[i].L.l_d;
P[i].Finish=true;
sign++;
}
}
if(sign==M) return true;
else if(Subsecurity(P,V))
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -