Linux操作系统课程设计.docx
- 文档编号:4056994
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:9
- 大小:122.83KB
Linux操作系统课程设计.docx
《Linux操作系统课程设计.docx》由会员分享,可在线阅读,更多相关《Linux操作系统课程设计.docx(9页珍藏版)》请在冰豆网上搜索。
Linux操作系统课程设计
《操作系统原理》
课程设计报告
Linux操作系统课程设计
一、设计题目
页面置换算法模拟
二、设计目的
通过请求页式存储管理中页面置换算法模拟设计,实现OPT,LRU,FIFO三种算法的对比分析了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。
三、设计要求
1.实现OPT,LRU,FIFO三种算法并进行对比分析;
2.界面简单易懂,且关键代码有注释说明;
3.编程语言采用java,运用eclipse开发软件。
四、设计思想说明
五、系统结构的说明
(1)界面类main,调用执行算法的类pageChange,是程序运行的入口;
(2)执行算法类pageChange,包含了三种算法的具体执行过程,用不同功能的按钮实现算法,算法结果通过调用显示结果的类display展示出来;
(3)显示算法结果类display,将算法运行的结果显示在组件上,包括缺页数、缺页率、置换次数、置换率等。
(4)生成随机的页面号引用串数组类randomNumber。
六、数据结构的说明
①m:
物理块数(int)
②n:
置换页面数(int)
③length:
页表长度(int)
④myt[]:
置换页面数组。
程序首选根据用户输入的置换页面数n,生成n个随机数放到该数组中;
⑤mym[]:
物理块数组。
程序首选根据用户输入的物理块数m,初始化一个m大小的数组。
程序运行时,若物理块数还没用完就直接往数组存数,若物理块已用完就根据特定算法把特定页面置换出来,再把新进来的页面存进数组;
⑥myb[]:
计数器数组。
运用于LRU算法中,数组大小和mym[]相等,对应mym[]下标存放每个物理块最近未使用的次数。
当要置换一个新的页面进入mym[]中,根据myb[]的数值,将mym[]最近最久未使用的页面置换出来,再把新页面的位置存放到被置换页面的位置;
⑦myb[]:
记录器数组。
运用于OPT算法中,数组大小和mym[]相等,记录mym[]中数据在myt[]后续页面出现的下标值,若没有在后续页面出现,就把该下标值设为myt[]数组长度。
当要置换一个新的页面进入mym[]中,根据myb[]的数值,将mym[]中在最长(未来)时间内不再被访问的页面置换出来,再把新页面的位置存放到被置换页面的位置。
⑧m_absent:
缺页数(int)
⑨m_absentf:
缺页率(double)m_absent/n
⑩m_changef:
页面置换率(as-m)/n;
⑪m_change:
置换次数,页面从数组中置换出来的次数
(int)m_change=as-m
as置换页面数,as和m_absent数值相等,as-m等于m_change;
⑫x:
是否需要置换(boolean)true为需要置换false为不需要置换;
⑬m1:
计算物理块剩余的中间变量(int)
⑭m_list:
要显示到窗口上的内容。
迭代myt[]数组,将mym[]中排序信息保存到m_list,后面的显示。
七、程序清单
(1)界面类main.java
packagepage2;
importjava.awt.BorderLayout;
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjavax.swing.*;
publicclassmain{
publicstaticvoidmain(String[]args){
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());//设置界面风格
}catch(Exceptione){
e.printStackTrace();
}
JFramemyframe=newJFrame();
myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭方式
pageChangepc=newpageChange();//实例化算法对象pageChange
JTabbedPanetab=newJTabbedPane();//存放pageChange对象的面板
JMenuBarmb=newJMenuBar();//菜单条
JMenumi=newJMenu("关于我们");
mi.addMouseListener(newMouseAdapter(){//当点击了菜单条中关于我们的按钮以后触发的事件
publicvoidmousePressed(MouseEvente){
JOptionPane.showMessageDialog(null,"CopyRightBy","information",
JOptionPane.DEFAULT_OPTION);
}
});
mb.add(mi);//菜单条添加菜单
tab.add("页面置换算法",pc);//存放pageChange对象的面板的名字
myframe.setLayout(newBorderLayout());//采用边框布局
myframe.add(BorderLayout.NORTH,mb);//窗体北部添加菜单条
myframe.add(BorderLayout.CENTER,tab);//窗体中间添加存放pageChange对象的面板
myframe.setTitle("页面置换算法的比较");//窗体的标题
myframe.setSize(950,700);//设定大小
myframe.setVisible(true);//设置窗体可见
}
}
(2)显示算法结果的面板display.java
packagepage2;
importjava.awt.*;
importjavax.swing.*;
publicclassdisplayViewextendsJPanel{JTextFieldtext1,text2,text3,text4;//放缺页数、缺页率、置换次数、置换率的文本域
JPanelpan;//缺页数、缺页率、置换次数、置换率放在p1--p4四个小面板中,再放在pan大面板中
JTextAreatextarea;//显示三个算法结果的文本域
publicdisplayView(){
text1=newJTextField(30);//缺页数、缺页率、置换次数、置换率的文本域的长度都为30,且不可编辑
text2=newJTextField(30);
text3=newJTextField(30);
text4=newJTextField(30);
text1.setEditable(false);
text2.setEditable(false);
text3.setEditable(false);
text4.setEditable(false);
pan=newJPanel();
pan.setLayout(newGridLayout(4,1));
FlowLayoutf=newFlowLayout();//流布局f的对齐方式为居中
f.setAlignment(FlowLayout.CENTER);
//放缺页数、缺页率、置换次数、置换率的面板p1--p4都采用了流布局f
JPanelp1=newJPanel();JPanelp2=newJPanel();JPanelp3=newJPanel();JPanelp4=newJPanel();
p1.setLayout(f);p2.setLayout(f);p3.setLayout(f);p4.setLayout(f);
p1.add(newJLabel("缺页数"));//各个小面板存放的组件都是label和text
p1.add(text1);
p2.add(newJLabel("缺页率"));
p2.add(text2);
p3.add(newJLabel("置换次数"));
p3.add(text3);
p4.add(newJLabel("置换率"));
p4.add(text4);
pan.add(p1);pan.add(p2);pan.add(p3);pan.add(p4);//将四个小面板添加到大面板中
textarea=newJTextArea();
textarea.setEditable(false);
JScrollPanejp=newJScrollPane(textarea);//将显示三个算法结果的文本域放在滚动面板中
this.setLayout(newBorderLayout());
this.add(BorderLayout.CENTER,jp);//滚动面板放在布局中间
this.add(BorderLayout.SOUTH,pan);//显示缺页数、缺页率、置换次数、置换率的大面板放在底部
}
}
(3)执行算法的面板pageChange.java
(关于具体的算法代码在这里没有粘贴进来,主要是界面相关的代码而已)
/**
*p1--p4分别是物理块数、置换页面数、页表长度、页面号引用串小面板
*pan1是放p1--p4的大面板
*pan2是显示算法结果的面板
*pan4是功能按钮面板,比如清除、生成随机页面号引用串
*/
JPanelpan1,pan2,pan3,pan4,p1,p2,p3,p4;
JButtonbutton1,button2,button3,clearButton,randomButton;
//FIFO、LRU、Optimal算法按钮;清除、生成随机页面号引用串按钮
JTextFieldtext1,text2,text3,text4;//物理块数、置换页面数、页表长度、页面号引用串文本域
Stringm_random="";//页面序列
intm,n,length;
intmyt[];
randomNumberRN;//随机数对象
displayViewFIFOTA,LRUTA,OptTA;//算法对象
publicvoidmisInPut(){
try{
Stringstr1,str2;
str1="";str2="";
m=Integer.parseInt(text1.getText());//物理块数
n=Integer.parseInt(text2.getText());//置换页面数
length=Integer.parseInt(text3.getText());//页表长度
if(m==0||n==0||length==0){
JOptionPane.showMessageDialog(this,"请输入数字字符","提示!
",
JOptionPane.ERROR_MESSAGE);
}
if(m>n&&length!
=0){
JOptionPane.showMessageDialog(this,"输入的物理块数大于页面数或页表长度为0",
"警告!
",JOptionPane.WARNING_MESSAGE);
text1.setText("0");
text2.setText("0");
text3.setText("0");
text4.setText("");
}else{
myt=newint[n];
RN=newrandomNumber();
myt=RN.rand(n,length);//(置换页面数,页表长度)
for(inti=0;i str2=String.valueOf(myt[i]); str1=str1+""+str2; } m_random=str1; //产生随即页面序列 text4.setText(""+m_random); } }catch(NumberFormatExceptionee){ JOptionPane.showMessageDialog(this,"输入数字字符! ","警告! ", JOptionPane.WARNING_MESSAGE); text1.setText("0"); text2.setText("0"); text3.setText("0"); text4.setText(""); FIFOTA.text1.setText("0"); FIFOTA.text2.setText("0"); FIFOTA.text3.setText("0"); FIFOTA.text4.setText("0"); FIFOTA.textarea.setText(null); LRUTA.text1.setText("0"); LRUTA.text2.setText("0"); LRUTA.text3.setText("0"); LRUTA.text4.setText(""); LRUTA.textarea.setText(null); OptTA.text1.setText("0"); OptTA.text2.setText("0"); OptTA.text3.setText("0"); OptTA.text4.setText(""); OptTA.textarea.setText(null); } } 八、使用说明书 (1)运行以后,在下面的三个可编辑文本框中填写数字,其中,物理块数要小于置换页面数。 (2)然后点击窗体下方的按钮列的第一个Random,产生随机的页面号引用数组。 (3)接着点击按钮列的第二个按钮FIFO,运行先进先出算法;点击按钮列的第三个按钮LRU,运行最近最久未使用算法;点击按钮列的第四个按钮Optimal,运行最佳置换算法;点击按钮列的第五个按钮Clear,将算法的运行结果清空。 算法的运行结果会显示在中间的文本域中:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 操作系统 课程设计