java实现页面置换算法
本文实例为大家分享了java实现页面置换算法的具体代码,供大家参考,具体内容如下
原理就不说了,直接上代码
FIFO
importjava.util.ArrayList;
importjava.util.List;
importutils.ListUtils;
/**
*
*
*@authorcnkeysky
*
*/
publicclassFIFO{
publicvoidrun(){
String[]inputStr={"1","2","3","4","2","1","2","3","5","2","3","7","6"};
//内存块
intmemory=3;
Listlist=newArrayList<>();
for(inti=0;i
LRU
importutils.ListUtils;
importjava.util.ArrayList;
importjava.util.List;
/**
*最近最久未用置换算法
*@authorcnkeysky
*
*/
publicclassLRU{
publicstaticvoidmain(String[]args){
String[]inputStr={"6","7","6","5","9","6","8","9","7","6","9","6"};
//内存块
intmemory=3;
Listlist=newArrayList<>();
for(inti=0;i=memory){
list.remove(0);
list.add(inputStr[i]);
System.out.println("第"+i+"次"+"访问:\t\t"+ListUtils.listToString(list));
}else{
list.add(inputStr[i]);
System.out.println("第"+i+"次"+"访问:\t\t"+ListUtils.listToString(list));
}
}
}
}
}
}
Clock
importjava.util.ArrayList;
importjava.util.List;
importutils.ListUtils;
/**
*
*
*@authorcnkeysky
*
*/
publicclassClock{
publicstaticvoidmain(String[]args){
String[]inputStr={"6","7","6","5","9","6","8","9","7","6","9","6"};
Listlist=newArrayList<>();
//内存块
intmemory=3;
//缺页次数
intcount=0;
String[]clock=newString[memory];
intindexNext=0;
intindex=0;
//初始化时钟
for(inti=0;imemory-1){
indexNext=Math.abs(memory-indexNext);
}
}
System.out.println("缺页次数:"+(inputStr.length-count));
}
}
工具类ListUtils
importjava.util.List;
publicclassListUtils{
publicListUtils(){
}
/**
*输出
*@paramlist将List转为数组并输出,out:2,3,4
*@return
*/
publicstaticStringlistToString(Listlist){
StringBuffercontent=newStringBuffer();
for(inti=0;ilist,Stringstr){
booleanflag=false;
for(Stringlis:list){
if(lis.equals(str)){
flag=true;
}
}
returnflag;
}
/**
*在List中查找是否有String,如果有返回下标,否则返回-1
*@paramlist
*@paramstr
*@return
*/
publicstaticintfindIndex(Listlist,Stringstr){
intindex=0;
for(Stringlis:list){
if(lis.equals(str)){
returnindex;
}
index++;
}
return-1;
}
publicstaticbooleanclockJudge(String[]clock,intindex){
if(clock[index].equals("0")){
returntrue;
}
returnfalse;
}
/**
*
*@paramindex下标
*@paramclock时钟
*@paramrange当前使用内存块
*@return
*/
publicstaticintfindZero(intindex,String[]clock,intrange){
while(true){
if(clock[index].equals("0")){
break;
}else{
clock[index]="0";
index++;
if(index>range-1){
index=Math.abs(range-index);
}
}
}
returnindex;
}
/**
*在数组中查找是否存在该字符串
*@paramobj
*@paramstr
*@return
*/
publicstaticbooleanstrJudge(Object[]obj,Stringstr){
booleanflag=false;
if(obj==null){
returnflag;
}
for(inti=0;i
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。