当前位置:首页 > 页面置换算法自己弄到的
页面置换算法模拟程序实现实验报告
提示:本实验用java实现,在JCeaterPRO中调试成功。程序源文件有
Interface.java fifo.java lru.java Page.java Interface.html。用IE打开Interface.html
一. 目的要求:
1、通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解。熟悉虚存管理的各种页面淘汰算法
2、通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。 二实验内容:
编写了一个请求分页存储管理中的页面置换算法模拟程序
1、模块设计: Interface.java
实现了界面设计和调用三种不同的置换算法 Page.java
页表类,利用了链表的数据结构 Fifo.java
FIFO页面置换算法的实现 Lru.java
LRU页面置换算法的实现
2、总体设计方案:
通过界面上的文本框吸收页号数据,调用两种页面置换算法进行分析,最后数据返回给界面进行显示
3.程序说明:
Fifo.java中的主干函数 FIFO页面置换算法的实现
public Page execute(String str,Page p1){ pa=p1; st=str; k=0;
//查看页表中是否存在正在进入的页号
for(int i=0;i {if(str.equalsIgnoreCase((String)pa.pl.get(i))) { k=1; break; } } //如果不存在,就加入页表 if(k==0){ //页表没有满时 if(pa.pl.size()<7) { pa.pl.add((String)st); pa.ptr=0; } //页表满了,淘汰页面,加入页号 else{ lost=(String)pa.pl.remove(pa.ptr); pa.pl.add(pa.ptr,st); pa.ptr=(pa.ptr+1)%7; } } //页号已经存在,不变动 else lost=\已装入\ return pa; } Lru.java中的主干函数 LRU页面置换算法的实现 public Page execute(String str,Page p1){ pa=p1; st=str; k=0; for(int i=0;i {if(str.equalsIgnoreCase((String)pa.pl.get(i))) { k=1; break; } } int x; if(k==0){ if(pa.pl.size()<7) { pa.pl.add((String)st); con.add((String)st); } else{ lost=(String)con.removeFirst(); x=pa.pl.indexOf(lost); pa.pl.remove(lost); pa.pl.add(x,st); con.add((String)st); } } else {lost=\已装入\ x=con.indexOf((String)st); con.remove(x); con.add((String)st);} return pa; } 4.程序调试 用IE打开Interface.html,按照要求输入任意字母或者数字的页号,点击LRU或者FIFO,注意每次输入一个页号,就要点击一次。在下面的文本框里就会显示结果 三:实验总结: 通过编写本实验,不仅理解了OS中页面置换算法,也锻炼java的awt编程能力,特别是布局设计和事件响应,编程过程中会遇到些小问题,可以通过各种途径解决,另外,编程之前要做好整体规划,最好写出来,把各个模块的功能和主要变量都写成文档,这样效率很高。编程是体力活,
共分享92篇相关文档