版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上CENTRAL SOUTH UNIVERSITY 计算机体系结构实验报告题 目 使用LRU方法更新Cache 一、实验目的了解和掌握寄存器分配和内存分配的有关技术。二、实验环境Eclipse IDE for Java Developers(Version: Kepler Release)Win7三、实验内容结合数据结构的相关知识,使用LRU的策略,对一组访问序列进行内部的Cache更新。LRU置换算法是选择最近最久未使用的页面予以置换。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来经历的时间T,当须淘汰一个页面时,选择现有页面中T值最大的,即最近最久
2、没有访问的页面。这是一个比较合理的置换算法。举例说明此问题,例如:有一个CACHE采用组相连映象方式。每组有四块,为了实现LRU置换算法,在快表中为每块设置一个2位计数器。我们假设访问序列为“1,1,2,4,3,5,2,1,6,7,1,3”。在访问CACHE的过程中,块的装入,置换及命中时,具体情况如下表所示:四、关键代码程序分情况讨论了,当一个cache装满的情况下,2个,3个4个装满的情况下,当输入访问序列的时候,自动进行识别,并进行相应的处理,这个就是当四个块都被装满的情况else /四个cache块都装满的情况if(jtf2.getText().equals(jt.getValueAt
3、(list-3, 1) /要访问的页面刚好在cache0中 dtm.addRow(new Objectjtf2.getText(), jt.getValueAt(list-3, 1), jt.getValueAt(list-3, 2), jt.getValueAt(list-3, 3), jt.getValueAt(list-3, 4), "命中");System.out.println(1);time1 = 0;time2+;time3+;time4+;jtf2.setText("");jlabel2.setText("请输入第"
4、+ list + "个访问页面:");五、运行截图及源代码如果按照访问序列“1,1,2,4,3,5,2,1,6,7,1,3”输入,运行结果如图可以看到,始终满足的是LRU源代码:package 使用LRU方法更新Cache;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.table.*;public class LRUCache extends Frame public static void main(String args) JFrame.setDefau
5、ltLookAndFeelDecorated(true);LRUCache lruc = new LRUCache();lruc.lauchFrame();JLabel jlabel2;JTextField jtf2;JButton jb_input;JScrollPane jsp;JTable jt;DefaultTableModel dtm;static int list = 1, count = list - 1;int time1 = 0;int time2 = 0;int time3 = 0;int time4 = 0;public void lauchFrame() this.se
6、tLayout(null);this.setBounds(100, 100, 540, 320);this.setBackground(Color.cyan);this.setVisible(true);jlabel2 = new JLabel("请输入第" + list + "个访问页面:");jtf2 = new JTextField();jb_input = new JButton("输入"); jlabel2.setBounds(20, 50, 140, 20);jtf2.setBounds(155, 50, 50, 20);
7、jb_input.setBounds(240, 50, 60, 20);this.add(jlabel2);this.add(jtf2);this.add(jb_input);this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););jb_input.addActionListener(new InputActionListener();Object title = "访问序列","Cache块0", "
8、;Cache块1", "Cache块2", "Cache块3", "状态"dtm = new DefaultTableModel(title, 0);jt = new JTable(dtm);jsp = new JScrollPane(jt);jsp.setBounds(50, 80, 440, 197);jsp.setBackground(Color.black);this.add(jsp);class InputActionListener implements ActionListener public void ac
9、tionPerformed(ActionEvent e) if(jtf2.getText().equals("") Object options = "OK" ;JOptionPane.showOptionDialog(null, "你的输入存在“”,请按提示输入!", "警告", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,null, options, options0);list+;if(count < 4) /count记录装入cach
10、e块的页面数switch(count) case 0:/cache块中没有装入页面的情况dtm.addRow(new Objectjtf2.getText(), jtf2.getText(), "", "", "", "装入");time2+;time3+;time4+;count+;jtf2.setText("");jlabel2.setText("请输入第" + list + "个访问页面:");break;case 1:/cache块中装入一个页面的
11、情况if(jtf2.getText().equals(jt.getValueAt(list-3, 1) /要访问的页面刚好在cache0中dtm.addRow(new Objectjtf2.getText(), jt.getValueAt(list-3, 1), "", "", "", "命中");time2+;time3+;time4+;jtf2.setText("");jlabel2.setText("请输入第" + list + "个访问页面:");
12、 else /要访问的页面不在cache块中dtm.addRow(new Objectjtf2.getText(), jt.getValueAt(list-3, 1), jtf2.getText(), "", "", "装入");time1+;time2 = 0;time3+;time4+;count+;jtf2.setText("");jlabel2.setText("请输入第" + list + "个访问页面:");break;case 2:/cache块中装入两个页面的
13、情况if(jtf2.getText().equals(jt.getValueAt(list-3, 1) /要访问的页面刚好在cache0中dtm.addRow(new Objectjtf2.getText(), jt.getValueAt(list-3, 1), jt.getValueAt(list-3, 2), "", "", "命中");time1 =0;time2+;time3+;time4+;jtf2.setText("");jlabel2.setText("请输入第" + list +
14、 "个访问页面:"); else if(jtf2.getText().equals(jt.getValueAt(list-3, 2) /要访问的页面刚好在cache1中dtm.addRow(new Objectjtf2.getText(), jt.getValueAt(list-3, 1), jt.getValueAt(list-3, 2), "", "", "命中");time1+;time2 = 0;time3+;time4+;jtf2.setText("");jlabel2.setText
15、("请输入第" + list + "个访问页面:"); else /要访问的页面不在cache块中dtm.addRow(new Objectjtf2.getText(), jt.getValueAt(list-3, 1), jt.getValueAt(list-3, 2), jtf2.getText(), "", "装入");time1+;time2+;time3 =0;time4+;count+;jtf2.setText("");jlabel2.setText("请输入第"
16、 + list + "个访问页面:");break;case 3:/cache块中装入三个页面的情况if(jtf2.getText().equals(jt.getValueAt(list-3, 1) /要访问的页面刚好在cache0中dtm.addRow(new Objectjtf2.getText(), jt.getValueAt(list-3, 1), jt.getValueAt(list-3, 2), jt.getValueAt(list-3, 3), "", "命中");time1 = 0;time2+;time3+;time
17、4+;jtf2.setText("");jlabel2.setText("请输入第" + list + "个访问页面:"); else if(jtf2.getText().equals(jt.getValueAt(list-3, 2) /要访问的页面刚好在cache1中dtm.addRow(new Objectjtf2.getText(), jt.getValueAt(list-3, 1), jt.getValueAt(list-3, 2), jt.getValueAt(list-3, 3), "", "
18、命中");time1+;time2 =0;time3+;time4+;jtf2.setText("");jlabel2.setText("请输入第" + list + "个访问页面:"); else if(jtf2.getText().equals(jt.getValueAt(list-3, 3) /要访问的页面刚好在cache2中dtm.addRow(new Objectjtf2.getText(), jt.getValueAt(list-3, 1), jt.getValueAt(list-3, 2), jt.getVal
19、ueAt(list-3, 3), "", "命中");time1+;time2+;time3 = 0;time4+;jtf2.setText("");jlabel2.setText("请输入第" + list + "个访问页面:");else /要访问的页面不在cache块中dtm.addRow(new Objectjtf2.getText(), jt.getValueAt(list-3, 1), jt.getValueAt(list-3, 2), jt.getValueAt(list-3, 3
20、), jtf2.getText(), "装入");time1+;time2+;time3+;time4 = 0;count+;jtf2.setText("");jlabel2.setText("请输入第" + list + "个访问页面:");break; else /四个cache块都装满的情况if(jtf2.getText().equals(jt.getValueAt(list-3, 1) /要访问的页面刚好在cache0中dtm.addRow(new Objectjtf2.getText(), jt.getV
21、alueAt(list-3, 1), jt.getValueAt(list-3, 2), jt.getValueAt(list-3, 3), jt.getValueAt(list-3, 4), "命中");System.out.println(1);time1 = 0;time2+;time3+;time4+;jtf2.setText("");jlabel2.setText("请输入第" + list + "个访问页面:"); else if(jtf2.getText().equals(jt.getValueAt(
22、list-3, 2) /要访问的页面刚好在cache1中dtm.addRow(new Objectjtf2.getText(), jt.getValueAt(list-3, 1), jt.getValueAt(list-3, 2), jt.getValueAt(list-3, 3), jt.getValueAt(list-3, 4), "命中");System.out.println(2);time1+;time2 = 0;time3+;time4+;jtf2.setText("");jlabel2.setText("请输入第" +
23、list + "个访问页面:"); else if(jtf2.getText().equals(jt.getValueAt(list-3, 3) /要访问的页面刚好在cache2中dtm.addRow(new Objectjtf2.getText(), jt.getValueAt(list-3, 1), jt.getValueAt(list-3, 2), jt.getValueAt(list-3, 3), jt.getValueAt(list-3, 4), "命中");System.out.println(3);time1+;time2+;time3 =
24、 0;time4+;jtf2.setText("");jlabel2.setText("请输入第" + list + "个访问页面:"); else if(jtf2.getText().equals(jt.getValueAt(list-3, 4) /要访问的页面刚好在cache3中dtm.addRow(new Objectjtf2.getText(), jt.getValueAt(list-3, 1), jt.getValueAt(list-3, 2), jt.getValueAt(list-3, 3), jt.getValueAt
25、(list-3, 4), "命中");System.out.println(4);time1+;time2+;time3+;time4 = 0;jtf2.setText("");jlabel2.setText("请输入第" + list + "个访问页面:");else /要访问的页面不在cache块中if(time1>time2 && time1>time3 && time1>time4) /如果cache0的页面最长时间没有被访问,新页面置换cache0中页面d
26、tm.addRow(new Objectjtf2.getText(), jtf2.getText(), jt.getValueAt(list-3, 2), jt.getValueAt(list-3, 3), jt.getValueAt(list-3, 4), "置换");time1 = 0;time2+;time3+;time4+;jtf2.setText("");jlabel2.setText("请输入第" + list + "个访问页面:"); else if(time2>time1 && time2>time3 && time2>time4) /如果cache1的页面最长时间没有被访问,新页面置换cache1中页面dtm.addRow(new Objectjtf2.getText(), jt.getValueAt(list-3, 1), jtf2.getText(), jt.getValueAt(list-3, 3), jt.getValueAt(list-3, 4), "置换"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小小书虫的读后感(15篇)
- 支付宝电子合同模板(3篇)
- 五级电工实操考试题库及答案
- 现货原油买卖合同模板(3篇)
- 老电工考试题库及答案
- 一个难忘的老师写人作文7篇
- 2025年网络直播行业网络直播与短视频应用研究报告及未来发展趋势预测
- 2025年社交媒体行业社交平台发展与用户行为分析报告
- 供应商评估表模板全面版
- 土建安全b证题库及答案解析
- GB/T 879.1-2000弹性圆柱销直槽重型
- GB/T 670-1986化学试剂硝酸银
- GB/T 18915.2-2002镀膜玻璃第2部分:低辐射镀膜玻璃
- GB/T 11693-2008船用法兰焊接座板
- 设备的维护和维修的风险评估
- 国开病理生理学形考任务4试题及答案
- 工程项目验收单模板
- DB11-T305-2014养老机构老年人健康评估规范
- 出血和凝血机制介绍课件课件
- 人教版数学五年级上册第五单元用字母表示数例3ppt课件
- 精彩的语文导入语和讲授语
评论
0/150
提交评论