分页管理实验报告.docx

上传人:b****4 文档编号:850924 上传时间:2022-10-13 格式:DOCX 页数:28 大小:181.52KB
下载 相关 举报
分页管理实验报告.docx_第1页
第1页 / 共28页
分页管理实验报告.docx_第2页
第2页 / 共28页
分页管理实验报告.docx_第3页
第3页 / 共28页
分页管理实验报告.docx_第4页
第4页 / 共28页
分页管理实验报告.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

分页管理实验报告.docx

《分页管理实验报告.docx》由会员分享,可在线阅读,更多相关《分页管理实验报告.docx(28页珍藏版)》请在冰豆网上搜索。

分页管理实验报告.docx

分页管理实验报告

2015-2016学年第二学期

操作系统课程

实验设计报告

 

班级网络2班

学号201414620207

姓名金铖

成绩

指导教师于复兴

 

1、实验题目:

(1)模拟请求分页存储管理中的硬件地址转换和产生却页中断的过程。

(2)采用先进先出(或LRU)算法实现分页管理的缺页调度。

2、实验目的:

(1)通过实验模拟请求分页存储管理中的硬件地址转换和产生却页中断帮助理解在分页式存储管理中怎样虚拟存储器。

(2)通过采用先进先出(或LRU)算法实现分页管理的缺页调度帮助理解和掌握模拟分页式虚拟存储管理的缺页中断,帮助自己对请求分页管理的概念有一个清楚的理解。

3、程序设计及实现过程:

(1)请求分页储存管理是把作业的全部信息存在磁盘上,当作业被选中时,可把作业的开始几页先装入主存并启动运行。

为此,在为作业建立页表时,应说明哪些页已在主存,哪些页尚未装入主存,页表格式为:

页号

标志

主存块号

外存地址

其中,标志表示对应页是否已经装入主存,“标志=0”表示该页尚未装入主存,“标志=1”表示该页已在主存。

主存块号表示已装入主存的页所占用的块号。

外存地址表示该页在外存的地址。

(2)作业执行完时,指令中的逻辑地址指出了参加运算的操作数存放的页号和单元号,硬件地址转换机构按页号查页表,若该页对应的标志为“1”,则表示该页已在主存。

根据关系式:

绝对地址=块号*块长+单元号。

计算出欲访问的主存单元地址,将块长设成2的整次幂,可把块号作为地址寄存器的高位部分,单元号作为低位部分。

两个拼接形成绝对地址。

按计算出的绝对地址取操作数,完成一条指令的执行。

若访问的页对应标志为“0”,则表示不在主存,这时硬件发缺页中断信号,由操作系统按页表中的该页对应的外存地址把该页装入主存后,执行该指令。

(3)设计一个“地址变换”程序来模拟硬件的地址转换工作。

当访问的页不在主存时,则形成绝对地址后不去模拟指令的执行,而用输出转换后的地址来代替一条指令的执行,当访问的页不在主存时,则输出“*”,表示产生了一次缺页中断。

该算法框图如下:

地址变换算法:

假定主存的每块长度为126个字节;现有一个共7页的作业,其中第0页至第3页已装入,其余三页尚未装入主存,该作业的页表为:

页号

标志

主存块号

外存地址

0

1

5

011

1

1

8

012

2

1

9

013

3

1

1

4

0

5

0

6

0

121

运行设计的地址变换机构程序,显示或打印运行结果。

因仅模拟地址变换,并不模拟指令的实际执行。

(4)在分页式虚拟存贮系统中,当硬件发出缺页中断后,转操作系统处理缺页中断。

如果主存中已无空闲块,当采用先进先出算法时,则淘汰最先进入主存的一页,若该页修改过,还要存入磁盘,然后在把当前要访问的页装入该块,并修改页表中的对应标志。

当采用LRU算法时,则淘汰最近没有访问的页。

大概流程图如下:

(5)有了具体的核心算法实现法之后,就可以开发简单的界面,并且把以上综合到程序中,最后调试BUG,完成实验。

4、实验结果及分析:

(1)对于题目一我制作了一个帮助界面(如图1),可以便于我记起实验的容以及理解相应知识,有了已知容,我输入逻辑地址(例如320),则程序输出为(如图2)。

图1“题目一帮助界面”图2“题目一运行界面”

(2)对于题目二我同样制作了一个帮助界面(如图3),可以便于我操作程序不出现格式错误,如果出错程序会弹出窗口报错(如图4)。

当物理块数为3,页面使用列表为233223123233时,则采用先进先出算法时table表应如下:

233221212233

2333221223

232333212

******(‘*‘代表缺页中断)

采用LRU算法时table表应如下:

233223123233

23322312323

2332231212

*****(‘*‘代表缺页中断)

则程序输出为(如图5、6)。

图3“题目二帮助界面”图4“题目二错误窗口”

图5“题目二FIFO算法”图6“题目二LRU算法”

5、实验收获和体会:

通过本次实验,使我对于虚拟存储管理的相关容有了更深的认识,同时提升了我的编程水平和思考问题的能力,对于以后学习或者工作上的困难克服有很大的积极作用。

通过程序设计的训练,我进一步学习和掌握了对程序的设计和编写,从中体会到了面向对象程序设计的便和巧妙。

懂得了在进行编写一个程序之前,要有明确的目标和整体的设计思想。

另外某些具体的细节容也是相当的重要。

这些宝贵的编程思想和从中摸索到的经验都是在编程的过程中获得的宝贵财富。

这些经验对我以后的编程会有很大的帮助的,我要好好利用。

我很珍惜这次实验的机会,冰冻三尺非一日之寒,我相信以后会更加细心、更加勤奋。

6、源程序:

1、下面是MenuFrame.Java

package.hjc;

importstatic.hjc.Constant.*;

importjava.awt.Button;

importjava.awt.Color;

importjava.awt.Frame;

importjava.awt.Graphics;

importjava.awt.Image;

importjava.awt.Toolkit;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.WindowAdapter;

importjava.awt.event.WindowEvent;

//菜单界面

publicclassMenuFrameextendsFrameimplementsActionListener{

/**

*

*/

privatestaticfinallongserialVersionUID=1L;

privateImageicon=Toolkit.getDefaultToolkit()

.getImage("image//icon.png");//图标

privateImagetext=Toolkit.getDefaultToolkit()

.getImage("image//text.png");//文字

privateButtonworkOne=newButton("进入题目一");//Button1

privateButtonworkTwo=newButton("进入题目二");//Button2

publicMenuFrame(Stringtitle){

this.setTitle(title);//设置题目

this.setLayout(null);//设置布局

this.setBounds((PM_WIDTH-EXE_WIDTH)/2,

(PM_HEIGHT-EXE_HEIGHT)/2,EXE_WIDTH,EXE_HEIGHT);//应用的位置

this.setIconImage(icon);//设置图标

this.setBackground(Color.YELLOW);//设置背景

workOne.setBounds((EXE_WIDTH-200)/2,(EXE_HEIGHT-40)/2,200,40);

workOne.addActionListener(this);

this.add(workOne);//添加Button1

workTwo.setBounds((EXE_WIDTH-200)/2,(EXE_HEIGHT-40)/2+80,

200,40);

workTwo.addActionListener(this);

this.add(workTwo);//添加Button2

this.addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

super.windowClosing(e);

System.exit(0);

}

});//添加窗口监听

this.setResizable(false);//设置不可改变大小

this.setVisible(true);//设置可视

}

//绘制的法

publicvoidpaint(Graphicsg){

Colorc=g.getColor();//得到初始g颜色

g.setColor(Color.BLUE);//设置画笔为蓝色

g.drawImage(text,(EXE_WIDTH-400)/2,40,400,150,this);//绘制text图片

g.drawString("(实验四)",400,160);//绘制文字

g.drawString("题目一:

模拟请求分页存储管理中的硬件地址转换和产生却页中断的过程",50,400);//绘制文字

g.drawString("题目二:

采用先进先出(或LRU)算法,实现分页管理的缺页调度",50,430);//绘制文字

g.setColor(Color.RED);//设置画笔为红色

g.drawRect(45,380,400,70);//绘制矩形

g.setColor(Color.CYAN);

g.drawString("制作:

乐事@Happy",380,480);

g.setColor(c);//恢复画笔初始颜色

}

publicstaticvoidmain(String[]args){

newMenuFrame("欢迎");

}

//动作监听

publicvoidactionPerformed(ActionEvente){

if(e.getSource()==workOne){

this.setVisible(false);

newworkOneFrame(this);

}elseif(e.getSource()==workTwo){

this.setVisible(false);

newworkTwoFrame(this);

}

}

}

2、下面是Constant.Java

package.hjc;

importjava.awt.Toolkit;

publicclassConstant{

publicstaticintEXE_WIDTH=500;//应用宽度

publicstaticintEXE_HEIGHT=500;//应用高度

publicstaticintPM_WIDTH=Toolkit.getDefaultToolkit().getSc

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1