操作系统实验五


title: 操作系统实验五
categories:

  • 操作系统实验
    tags:

作业

某程序在内存中分配3块内存,初始为空,访问页的走向为2,3,2,1,5,2,4,5,3,2,5,2,用FIFO和LRU算法分别计算缺页次数。
有一虚拟存储系统,采用先进先出的页面淘汰算法。在内存中为每个进程分配3块。进程执行时使用页号的顺序为 4 3 2 1 4 3 5 4 3 2 1 5
(1)该进程运行时总共出现几次缺页。
(2)若每个进程在内存有4块,又将产生几次缺页。
(3)如何解释所出现的现象。

代码

#include <iostream>
using namespace std;
const int MaxBlock = 	3;
const int pagelength=12;
int Requestpage[pagelength]={2,3,2,1,5,2,4,5,3,2,5,2};
void ahead(int block[])
{
	for(int i=1;i<MaxBlock;i++)
	{
		block[i-1]=block[i];
	}
}
void ahead(int block[],int set)
{
	for(int i=set+1;i<MaxBlock;i++)
	{
		block[i-1]=block[i];
	}
	
}
int  FIFO()
{
	int ShortagePage = MaxBlock;
	int block[MaxBlock];
	for(int i=0;i<MaxBlock;i++)
	{
		block[i]=Requestpage[i];
	}
	for(int i=MaxBlock;i<pagelength;i++)
    {   bool ifexist=false;
    	for(int j=0;j<MaxBlock;j++)
    	{
			if(Requestpage[i]==block[j])
			{
			    ifexist=true;
			    break;
			}
		}
		if(!ifexist)
		{
			ahead(block);
			block[MaxBlock-1] = Requestpage[i];
			ShortagePage++;
		}
    }
	return ShortagePage; 
}

int LRU()
{
	int ShortagePage = MaxBlock;
	int block[MaxBlock];
	for(int i=0;i<MaxBlock;i++)
		{
			block[i]=Requestpage[i];
		}
	for(int i=MaxBlock;i<pagelength;i++)
	    {   bool ifexist=false;
	        int j=0;
	    	for(;j<MaxBlock;j++)
	    	{
				if(Requestpage[i]==block[j])
				{
				    ifexist=true;
				    break;
				}
			}
			if(!ifexist)
			{
				ahead(block);
				block[MaxBlock-1] = Requestpage[i];
				ShortagePage++;
			}
			else
			{
				ahead(block,j);
				block[MaxBlock-1]=Requestpage[i];
			}
	    }
	    return ShortagePage;

}


int main()
{
	cout<<"1.使用FIFO算法算缺页次数和缺页率\n2.使用LRU算法算缺页次数和缺页率\n请输入:";
	int options;
	cin>>options;
	switch (options) {
		case 1:{
			cout<<"缺页次数为:"<<FIFO()<<"\t缺页率为:"<<FIFO()/1.0/pagelength; 
			break;
		}
			//TODO
			
		case 2:
			{
						cout<<"缺页次数为:"<<LRU()<<"\t缺页率为:"<<LRU()/1.0/pagelength; 
						break;
					}
		default:
			//TODO
			break;
	} 
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elik-hb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值