操作系统_存储管理_页面置换算法_先进先出页面置换算法
程序员文章站
2024-03-18 08:19:28
...
首先明确,我们要将页上的信息对应装入到物理块中
那么我们装入物理块中时,就首先要判断,物理块是否满,如果不满,写入,如果满,按照先进先出的原则,将物理块中的页替换出去
贴代码
#include<iostream>
#define N 200
using namespace std;
int page[N];//页面引用号
struct block
{
int block;
int bt;
}b1[N];
int n;//页面引用号个数
int m;//物理块数目
void fifo()
{
int j = 0;
memset(b1, -1, sizeof(b1)); //将物理块清零
for (int i = 0; i < n; i++)
{
for (; j < m;)
{ bool flag = false;
if (b1[j].block == -1) //判断是否满
{
b1[j].block = page[i]; //不满写进去
b1[j].bt = j;
cout<<endl<<"当前内存中页面情况wu:"<<endl;
for(int x = 0; x < m; x++)
cout<<b1[x].block<<" "; //遍历
cout<<endl<<endl;
j++;
cout<<j<<endl;
j = j%m ;
flag = true;
break;
}
//队满替换
if(!flag)
{
for(int k = 0; k < m; k++) //将最先入队的覆盖,后面的以此往前提一个位置
b1[k].block = b1[k+1].block;
b1[m-1].block = page[i]; //将新的写入最后一个位置
}
cout<<endl<<"当前内存中页面情况ti:"<<endl;
for(int x = 0; x < m; x++)
cout<<b1[x].block<<" ";
cout<<endl<<endl;
break;
}
}
}
int main()
{
cin>>n>>m;
for(int i=0; i < n; i++){
cin>>page[i];
}
fifo();
return 0;
}