⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fifo.cpp

📁 大家可以参考一下啊
💻 CPP
字号:
#include<iostream.h>
#include<stdio.h>
void read(int a[50],int& n)                                           //读入页面走向      
{
	cout<<"输入进程的页面走向,以0结束!\n";
	n=0;
	do
	{
		cin>>a[n];
	}while(a[n++]!=0&&n<50);
	--n;
	cout<<"页面走向为:\n";
	cout<<"----------------------\n";
	for(int i=0;i<n;i++)
	{
		cout<<a[i]<<" ";
	}
	cout<<'\n';
	cout<<"----------------------\n";
}



void main()
{
	cout<<"*****   信科 060215 邵进   ******\n";
	cout<<"*****此程序使用的是FIFO算法******\n\n\n";
	cout<<"输入分配的内存块数:";
	int k;
	cin>>k;
	int q=0;                                                         //记录缺页次数
	int x[50]={0},y;                                                 //记录内存块中页面停留的时间
	int i,a[50];                                                     //记录页面走向
	int p[50]={0};                                                   //记录内存块中的页面
	read(a,i);
	for(int j=0;j<i;j++)
	{
		int count1=0;
		for(int m=0;m<k;m++)
		{
			if(a[j]!=p[m]) count1++;
		}
		if(count1==k)
		{
			for(int t=0;t<k;t++)
			{
				int count2=0;
				for(int r=0;r<k;r++)
				{
					if(x[t]>=x[r])count2++;
				}
				if(count2==k){
					y=t;break;
				}
			}			
			cout<<"第"<<j+1<<"次 <"<<a[j]<<"页> 执行时"<<"\t"<<"缺页"<<"   ";
			if(p[y]==0)cout<<"内存块"<<y+1<<"中无页面"<<"直接将 <"<<a[j]<<"页> 调入内存块"<<y+1; 
			else cout<<"调出内存块"<<y+1<<"中的 <"<<p[y]<<"> 页,将 <"<<a[j]<<"页> 调入内存块"<<y+1; 
			p[y]=a[j];                                                //置换进内存块
			x[y]=0;
			for(t=0;t<k;t++)
			{
				x[t]++;
			}
			x[y]--;
		    q++;                                                      //缺页次数记录
		}
		else cout<<"第"<<j+1<<"次 <"<<a[j]<<"页> 执行时"<<"\t"
			<<"命中"<<'\t'<<"执行下个页面!";
		cout<<endl;
	}
	cout<<"缺页次数:"<<q<<endl;
    cout<<"缺页率  :"<<q<<'/'<<i<<"="<<(float)q/(float)i<<endl;
	cout<<endl<<"------------------输入enter结束--------------"<<endl;
	getchar();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -