页面置换算法模拟程序实现实验报告
2006-06-05 17:07
441 查看
[align=center]页面置换算法模拟程序实现实验报告 [/align]
提示:本实验用java实现,在JCeaterPRO中调试成功。程序源文件有Interface.java fifo.java lru.java Page.java Interface.html。用IE打开Interface.html
[align=left] [/align]
一. 目的要求:
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<pa.pl.size();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<pa.pl.size();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编程能力,特别是布局设计和事件响应,编程过程中会遇到些小问题,可以通过各种途径解决,另外,编程之前要做好整体规划,最好写出来,把各个模块的功能和主要变量都写成文档,这样效率很高。编程是体力活,
12/7/2005
提示:本实验用java实现,在JCeaterPRO中调试成功。程序源文件有Interface.java fifo.java lru.java Page.java Interface.html。用IE打开Interface.html
[align=left] [/align]
一. 目的要求:
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<pa.pl.size();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<pa.pl.size();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编程能力,特别是布局设计和事件响应,编程过程中会遇到些小问题,可以通过各种途径解决,另外,编程之前要做好整体规划,最好写出来,把各个模块的功能和主要变量都写成文档,这样效率很高。编程是体力活,
12/7/2005
相关文章推荐
- 使用C/C++实现Socket聊天程序(代码+实验报告)
- 第九周实验报告 任务2 定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
- 使用C/C++实现Socket聊天程序(代码+实验报告)
- 实验二 作业调度模拟程序 报告
- 第九周实验报告任务 1 定义Time类中的<<和>>运算符重载,实现时间的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
- 实验报告四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 软件工程(C编码实践篇)”实验报告 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 实验二作业调度模拟程序实验报告
- 第九周实验报告任务3 定义分数类中<<和>>运算符重载,实现分数的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
- 软件工程(C编码实践篇)”实验报告 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- c#实验报告模拟发牌程序
- “软件工程(C编码实践篇)”实验报告【实验四:用可重用的链表模块来实现命令行菜单小程序V2.5】
- 实验报告五:用callback增强链表模块来实现命令行菜单小程序V2.8
- GPIO模拟I2C程序实现
- 实验四:用可重用的链表模块来实现命令行菜单小程序
- 《C++第八周实验报告2-1》---实现Time类中的运算符重载
- 模拟OICQ的实现思路和核心程序(三)
- MFC实现简单的键盘模拟程序
- 第九周实验任务二--定义Complex类中的<<和>>运算符的重载,实现输入和输出,使程序读起来更自然
- 【操作系统】实验二 作业调度模拟程序