Linux操作系统课程设计.docx_第1页
Linux操作系统课程设计.docx_第2页
Linux操作系统课程设计.docx_第3页
Linux操作系统课程设计.docx_第4页
Linux操作系统课程设计.docx_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统原理课程设计报告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/nm_changef: 页面置换率 (as - m) / n;m_change :置换次数,页面从数组中置换出来的次数(int)m_change=as - mas 置换页面数,as和m_absent数值相等,as-m等于m_change;x: 是否需要置换(boolean) true为需要置换 false为不需要置换;m1 :计算物理块剩余的中间变量 (int)m_list: 要显示到窗口上的内容。迭代myt数组,将mym中排序信息保存到m_list,后面的显示。七、程序清单(1)界面类main.javapackage page2;import java.awt.BorderLayout;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.*;public class main public static void main(String args) tryUIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();/设置界面风格catch(Exception e)e.printStackTrace();JFrame myframe = new JFrame();myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置关闭方式pageChange pc = new pageChange();/实例化算法对象pageChangeJTabbedPane tab = new JTabbedPane();/存放pageChange对象的面板JMenuBar mb = new JMenuBar();/菜单条JMenu mi = new JMenu(关于我们);mi.addMouseListener(new MouseAdapter() /当点击了菜单条中关于我们的按钮以后触发的事件public void mousePressed(MouseEvent e) JOptionPane.showMessageDialog(null,Copy Right By ,information, JOptionPane.DEFAULT_OPTION););mb.add(mi);/菜单条添加菜单tab.add(页面置换算法, pc);/存放pageChange对象的面板的名字myframe.setLayout(new BorderLayout();/采用边框布局myframe.add(BorderLayout.NORTH, mb);/窗体北部添加菜单条myframe.add(BorderLayout.CENTER, tab);/窗体中间添加存放pageChange对象的面板myframe.setTitle(页面置换算法的比较);/窗体的标题myframe.setSize(950, 700);/设定大小myframe.setVisible(true);/设置窗体可见(2)显示算法结果的面板display.javapackage page2;import java.awt.*;import javax.swing.*;public class displayView extends JPanel JTextField text1, text2, text3, text4;/放缺页数、缺页率、置换次数、置换率的文本域JPanel pan;/缺页数、缺页率、置换次数、置换率放在p1-p4四个小面板中,再放在pan大面板中JTextArea textarea;/显示三个算法结果的文本域public displayView() text1 = new JTextField(30);/缺页数、缺页率、置换次数、置换率的文本域的长度都为30,且不可编辑text2 = new JTextField(30);text3 = new JTextField(30);text4 = new JTextField(30);text1.setEditable(false);text2.setEditable(false);text3.setEditable(false);text4.setEditable(false);pan = new JPanel();pan.setLayout(new GridLayout(4, 1);FlowLayout f=new FlowLayout();/流布局f的对齐方式为居中f.setAlignment(FlowLayout.CENTER);/放缺页数、缺页率、置换次数、置换率的面板p1-p4都采用了流布局fJPanel p1=new JPanel();JPanel p2=new JPanel();JPanel p3=new JPanel();JPanel p4=new JPanel();p1.setLayout(f);p2.setLayout(f);p3.setLayout(f);p4.setLayout(f);p1.add(new JLabel( 缺页数 );/各个小面板存放的组件都是label和textp1.add(text1);p2.add(new JLabel( 缺页率 );p2.add(text2);p3.add(new JLabel( 置换次数 );p3.add(text3);p4.add(new JLabel( 置换率 );p4.add(text4);pan.add(p1);pan.add(p2);pan.add(p3);pan.add(p4);/将四个小面板添加到大面板中textarea = new JTextArea();textarea.setEditable(false);JScrollPane jp=new JScrollPane(textarea);/将显示三个算法结果的文本域放在滚动面板中this.setLayout(new BorderLayout();this.add(BorderLayout.CENTER, jp);/滚动面板放在布局中间this.add(BorderLayout.SOUTH, pan);/显示缺页数、缺页率、置换次数、置换率的大面板放在底部(3)执行算法的面板pageChange.java(关于具体的算法代码在这里没有粘贴进来,主要是界面相关的代码而已)/* * p1-p4分别是物理块数、置换页面数、页表长度、页面号引用串小面板 * pan1是放p1-p4的大面板 * pan2是显示算法结果的面板 * pan4是功能按钮面板,比如清除、生成随机页面号引用串 */JPanel pan1, pan2, pan3, pan4,p1,p2,p3,p4;JButton button1, button2, button3, clearButton, randomButton;/FIFO、LRU、Optimal算法按钮;清除、生成随机页面号引用串按钮JTextField text1, text2, text3, text4;/物理块数、置换页面数、页表长度、页面号引用串文本域String m_random = ;/ 页面序列int m, n, length;int myt;randomNumber RN;/随机数对象displayView FIFOTA, LRUTA, OptTA;/算法对象public void misInPut() try String str1, 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 = new intn;RN = new randomNumber();myt = RN.rand(n, length);/(置换页面数,页表长度)for (int i = 0; i n; i+) str2 = String.valueOf(myti);str1 = str1 + + str2;m_random = str1;/ 产生随即页面序列text4.setText( + m_random); catch (NumberFormatException ee) 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.setTex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论