}
void PageTable()//页表
{
cout<<"页表状态如下表:"<<endl;
cout<<"---------------------------"<<endl;
cout<<"页号"<<" | "<<"块号"<<endl;
for(int i=0;i<NUMBER;i++)
{
cout<<"---------------------------"<<endl;
cout<<i<<" | "<<file.FileKuaiNumber[i]<<endl;
}
}
void back()//主存回收函数
{
cout<<"请输入要回收作业的作业名:"<<endl;
string backfilename;
cin>>backfilename;
cout<<"需要回收的作业的作业名:"<<backfilename<<endl;
int i;//字节号
int j;//位号
if(file.FileName==backfilename)
{
for(int m=0;m<NUMBER;m++)
{
i=file.FileKuaiNumber[m]/8;
j=file.FileKuaiNumber[m]%8;
MAP[i][j]=0;
}
}
map_state();
www.751com.cn
MAP[0][3]=1;
MAP[0][5]=1;
map_state();
L: char a;
cout<<"请选择操作(输入s表示申请空间,h表示回收空间):"<<endl;
cin>>a;
if(a=='s')
{
Filecin();
map_work();
}
if(a=='h')
{
back();
}
goto L;
}
辣、实验总结
在输入位示图状态时,两个循环即将结束的时候要初始化位示图,防止重复显示。
按找到的位计算对应的块号。计算公式:块号=J*8+I。其中,J表示找到的字节号,I表示找到的位号。由块号计算字节号和位号的公式如下:字节号=int(块号/8) 位号=mod(块号/8),所以,判断主存是否能够分配即为:if(file.FileSize<=FREE*8) 否则将显示申请空间大于系统所剩空间!420