操作系统实验--存储管理

一、实验名称

存储管理

二、实验内容

        设计一个请求页式存储管理方案,并编写模拟程序实现。淘汰算法采用两种不同的算法如:FIFO和LRU,并比较它们的不同之处。

三、实验原理和设计思路

        不同的置换算法,可使同一组进程发生的缺页率不同,如果采用的置换算法不当,会大大降低CPU的使用高效率。
        FIFO算法优先置换最先进入内存的页。LRU每次选择离当前时间被访问最远的页置换。

四、核心代码

// 框架采用Houchaoqun_XMU提供的源代码
//海轰根据实验具体要求进行了改进
void FIFO()
{
	cout<<"------------------ FIFO算法------------------ "<<endl;
	cout<<"页面置换情况如下:"<<endl;
	initial();
	bool isInQueue;
	int point = 0;  
	for (int i = MinBlockNum;i<PageNum;i++)
	{
		isInQueue = false;
		for (int k = 0;k<MinBlockNum;k++)
		{
			if (VirtualQueue[k] == PageOrder[i])   //如果当前页面在队列中
			{
				isInQueue = true;
			}
		}

		if (!isInQueue)   //如果当前页面不在队列中,则进行相应的处理
		{
			LackPageNum++;  //缺页数加1

			VirtualQueue[point] = PageOrder[i];
			display(PageOrder[i],!isInQueue);// 填满之后的输出
			point++;
			if (point == MinBlockNum) 
			{
				point = 0;  //当point指向队尾后一位的时候,将point重新指向队首
			}
		}
		else
		{
				display(PageOrder[i],!isInQueue);
		}
	}	
}
void LRU()
{
	cout<<"------------------LRU算法------------------ "<<endl;
	cout<<"页面置换情况如下:"<<endl;

	initial();
	bool isInQueue;
	int point,k;  //指向最长时间未被访问的下标
	
	for(int i = MinBlockNum;i<PageNum;i++)
	{
		isInQueue = false;	
		for (k = 0;k<MinBlockNum;k++)
		{
			if (VirtualQueue[k] == PageOrder[i])   //如果当前页面在队列中
			{
				isInQueue = true;
			}
		}

		if (!isInQueue)
		{
			LackPageNum++;
			point = 0;
			for (int j = 1;j<MinBlockNum;j++)
			{
				if (LRUtime[point]<LRUtime[j])
				{
					point = j;
				}
			}

			for (int s = 0;s<MinBlockNum;s++)//其余页面对应的时间要+1
			{
				if (VirtualQueue[s] != VirtualQueue[point])
				{
					LRUtime[s]++;
				}
			}

			VirtualQueue[point] = PageOrder[i];
			LRUtime[point] = 0;

			display(PageOrder[i],!isInQueue);
		}//if
		else   //负责更新当前对应页面的时间
		{
			for (int s = 0;s<MinBlockNum;s++)//其余页面对应的时间要+1
			{
				if (VirtualQueue[s] != PageOrder[i])
				{
					LRUtime[s]++;
				}
				else
					LRUtime[s] = 0;
			}
				display(PageOrder[i],!isInQueue);
		}
	}//for
}

五、结果截图(部分)

在这里插入图片描述

雨听

青苔入镜 檐下风铃 摇晃曾经 回忆 无从剪接
微信搜索【海轰Pro】
相互学习,共同进步!
海轰会不间断更新源码的 Thanks♪(・ω・)ノ

猜你喜欢

转载自blog.csdn.net/weixin_44225182/article/details/106068170