资源简介
通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解。熟悉虚存管理的各种页面淘汰算法。通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。
代码片段和文件信息
import java.util.linkedList;
public class LRU {
private linkedList stack;//模拟页面‘寄存器‘
private int size;//寄存器大小表示一共可装入多少页面
public LRU(int size) {
stack = new linkedList<>();
this.size = size;
}
//LRU算法简单实现返回一共未命中的次数
public int lru(int[] pageNumbers)
{
if(size <= 0 || pageNumbers == null)
throw new IllegalArgumentException(“illegal arugments“);
if(pageNumbers.length <= size)
return pageNumbers.length;
int unhit = 0;
for(int i = 0; i < pageNumbers.length; i++)
{
int index = isHit(pageNumbers[i]);
if(index == -1)
{
unhit = processUnHit(pageNumbers[i] unhit);
System.out.println(“ “+pageNumbers[i]+“ “+“缺页“);
}
else
{
ifHit(pageNumbers[i] index);
System.out.println(“ “+pageNumbers[i]+“ “+“命中“);
}
}
return unhit;
}
/**
*
* @param pageNumber 判断 pageNumber是否hit
* @return -1 表示 unhit 其他表示hit
*/
private int isHit(int pageNumber){
return stack.indexOf(pageNumber);
}
/**
* 当栈未满时未命中的页面号直接入栈;栈满时需要替换页面先选中一个页面(栈底)删除然后Push新页面
* @param pageNumber 未命中的页面号
* @param count 当前未命中次数
* @return 更新后的未命中的次数
*/
private int processUnHit(int pageNumber int count){
if(isFull())
stack.removeLast();//删除最久未访问的页面
stack.push(pageNumber);//放入最近访问的页面
count++;//未命中的次数加1
return count;
}
//命中更换
private void ifHit(int pageNumber int index){
stack.push(stack.remove(index));
}
//判断‘寄存器‘栈是否已经满了
private boolean isFull()
{
if(stack.size() < size)
return false;
else
return true;
}
//test
public static void main(String[] args) {
int[] pageNumbers = {47117245718};
int size = 3;
for(int i = 0; i < pageNumbers.length; i++)
System.out.print(“ “+pageNumbers[i]+“ “);
System.out.println();
LRU lru = new LRU(size);
System.out.println(“缺页率:“+lru.lru(pageNumbers)+“/“+pageNumbers.length);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-11-11 14:06 squid\
文件 301 2016-11-11 10:07 squid\.classpath
文件 381 2016-11-11 10:07 squid\.project
目录 0 2016-11-11 14:06 squid\.settings\
文件 598 2016-11-11 10:07 squid\.settings\org.eclipse.jdt.core.prefs
目录 0 2016-11-11 14:06 squid\bin\
文件 2503 2016-11-11 11:37 squid\bin\LRU.class
目录 0 2016-11-11 14:06 squid\src\
文件 2712 2016-11-11 11:37 squid\src\LRU.java
- 上一篇:iDRAC7.zip
- 下一篇:计组16位ALU课程设计
评论
共有 条评论