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

📄 fifo.cpp

📁 课程设计报告_先进先出(FIFO)页面置换算法 里面全齐
💻 CPP
字号:
#include<iostream>
using namespace std;
void main()
{
	char a;
	do
	{
		int pagenum=0;             ///内存的物理块数
        int total=0;               ///要访问的叶面总数
        int lacknumber=0;              ///缺页的总数
	    int array[50];             
	    for(int x=0;x<50;x++)
		{
			array[x]=-1;      //-1代表没有内容
		}
	    int seque[50]={0};
	    cout<<"请输入系统为进程在内存中分配的物理块数:";
	    cin>>pagenum;
	    cout<<"请输入访问页面的顺序(输入-1结束):";
	    for(int i=0;i<50;i++)
		{
			int num;
		    cin>>num;
		    if(num!=-1)
			{
				seque[i]=num;
			    total++;
			}
		    else
			{
				seque[i]=num;break;
			}
		}
	    cout<<"总的页面数为"<<total<<endl;           ///总的页面数
	    if(total<pagenum)
		{
			for(i=0;i<total;i++)     
			{
				array[i]=seque[i];
			    cout<<"进程访问页面"<<seque[i]<<endl;
		        cout<<"缺页  "<<"页面"<<seque[i]<<"进入内存  "<<"此时页面内容为";
			    for(int j=0;j<total;j++)
				{
					cout<<array[j]<<" ";
				}
			    cout<<"(-1代表没有内容)"<<endl;
			    cout<<endl;
		        lacknumber++;  
			}
		}
	    else
		{
			for(int i=0;i<pagenum;i++)     
			{
				array[i]=seque[i];
		        cout<<"进程访问页面"<<seque[i]<<endl;
		        cout<<"缺页  "<<"页面"<<seque[i]<<"进入内存  "<<"此时页面内容为";
			    for(int j=0;j<pagenum;j++)
				{
					cout<<array[j]<<" ";
				}
			    cout<<"(-1代表没有内容)"<<endl;
		        cout<<endl;	
			}
		    int k=0;
	        for(i=pagenum;i<total;i++)
			{
				int flag=0;
                for(int n=0;n<pagenum;n++)
				{
					if(array[n]==seque[i])
					{ 
						flag=1;
					    break;
					}
				}
			    if(flag==1)
				{
					cout<<"进程访问页面"<<seque[i]<<endl;
			        cout<<"不产生缺页中断  此时页面内容为";
			        for(int j=0;j<pagenum;j++)
					{
						cout<<array[j]<<" ";
					}
					cout<<endl;
				}
				else
				{
					int tem=array[k];
				    array[k]=seque[i];
				    cout<<"进程访问页面"<<seque[i]<<endl;
				    cout<<"缺页  产生缺页中断  "<<"页面"<<tem<<"被替换"<<endl;
				    cout<<"此时页面内容为";
				    for(int j=0;j<pagenum;j++)
					{
						cout<<array[j]<<" ";
					}
				    k++;
				    if(k==pagenum)
					{
						k=0;
					}
			        lacknumber++;
				    cout<<endl;
				}
				cout<<endl;
			}
			lacknumber=pagenum+lacknumber;
		}
	    cout<<"缺页率="<<lacknumber<<"/"<<total<<"="<<float(lacknumber)/float(total)<<endl;
	    cout<<"按任意键继续..."<<endl;
	}
	while(cin>>a);
  }  

⌨️ 快捷键说明

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