操作系统_存储管理_页面置换算法_先进先出页面置换算法



首先明确,我们要将页上的信息对应装入到物理块中

那么我们装入物理块中时,就首先要判断,物理块是否满,如果不满,写入,如果满,按照先进先出的原则,将物理块中的页替换出去

贴代码

#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;
} 

 

猜你喜欢

转载自blog.csdn.net/ljh_laura_li/article/details/80245011
今日推荐