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

📄 fifo.java

📁 模拟实现以下页面置换算法
💻 JAVA
字号:
package myprojects.os;
import java.io.*;
//FIFO页面置换算法实现及其命中率计算
class FIFO{
	public FIFO(){}	//缺省构造方法
	int[] page = new int[400]; //定义数组,用以接收页面数组的内容
		
	public float Fshootpercent(int p)throws IOException{ //有参Fshootpercent(int p)
		GetRandom random =new GetRandom();	//方法,由测试类传入内存页面数,并用此
		page=random.getPage();		//参数计算其对应的FIFO的命中率及返回该命中率;
		float percent,sum=0;		//设置两个float型变量,其中percent用于存放命中率,sum则用于记录命中次数
		int[] Fpage= new int[p];	//Fpage[]数组,作内存使用,用于存放当前输入的指令
		int n=0,s=0;		//对应的页地址,数组长度由传入参数决定
		int i,j,t;			
		for(i=0;i<400;i++){
			if(n==0){		//内存为空
				Fpage[0]=page[i];// 把当前页面值存入内存
				n++;	//记录当前内存空间
			}
			else
				if(n<p-1){//内存不为空且内存未满
					s=0;
					for(j=0;j<=n-1;j++)	//与内存存放的内容比较,相等则读入下一条	
						if(Fpage[j]==page[i]){	//指令
							sum++;	//命中次数加1
							s=1;	//标记比较结果,有相等则s=1
							break;
						}
					if(s==0){ //当前指令所对应的页面值与内存所有内容比较不相等
						Fpage[n]=page[i];	//则将当前页面值添加入内存
						n++;	//记录当前内存空间
					}	
				}
				else{	//内存已满
					s=0;	
					for(j=0;j<p;j++)	//与内存存放的内容比较,相等则读入下一条
						if(Fpage[j]==page[i]){	
							sum++;	//指令命中次数加1
							s=1;
							break;
						}
					if(s==0){//当前指令所对应的页面值与内存所有内容比较不相等
						for(j=0;j<p-1;j++)	
							Fpage[j]=Fpage[j+1]; //将最先进入内存的页面替换出去
						Fpage[j]=page[i];	//并将当前页面值添加入内存(数组末端)
					}		
				}
		}
		percent=sum/400;	//计算命中率
		return percent;	//返回该值
	}
}	

⌨️ 快捷键说明

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