【Jsp精品源码栏目提醒】:网学会员在Jsp精品源码频道为大家收集整理了“刘晓东信息安全1001 - 基础科学“提供大家参考,希望对大家有所帮助!
计算机体系结构实验报告专业班级:信安 1001学号:010909100706器分配和内存分配的有关技术二、实验内容 结合数据结构的相关知识,使用 LRU 的策略,对一组访问序列进行内部的Cache 更新三、实验思路 LRU 置换算法是选择最近最久未使用的页面予以置换。
该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来经历的时间 T,当须淘汰一个页面时,选择现有页面中 T 值最大的,即最近最久没有访问的页面。
这是一个比较合理的置换算法。
举例说明此问题,例如:有一个 CACHE 采用组相连映象方式。
每组有四块,为了实现 LRU 置换算法,在快表中为每块设置一个 2 位计数器。
我们假设访问序列为“112435216713”。
在访问 CACHE的过程中,块的装入,置换及命中时,具体情况如下表所示: 1 1 2 4 3 5 2 1 6 7 1 3Cache 块 0 1 1 1 1 1 5 5 5 5 7 7 7Cache 块 1 2 2 2 2 2 2 2 2 2 3Cache 块 2 4 4 4 4 1 1 1 1 1Cache 块 3 3 3 3 3 6 6 6 6 装入命中装入装入装入置换命中置换置换置换命中置换四、实验结果如图:一、程序源代码:import java.awt.import java.awt.event.import javax.swing.import javax.swing.table.public class LRUCache extends Frame public static void mainString args JFrame.setDefaultLookAndFeelDecoratedtrue 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.setLayoutnull this.setBounds100 100 540 320 this.setBackgroundColor.cyan this.setVisibletrue jlabel2 new JLabel请输入第 list 个访问页面: jtf2 new JTextField jb_input new JButton输入 jlabel2.setBounds20 50 140 20 jtf2.setBounds155 50 50 20 jb_input.setBounds240 50 60 20 this.addjlabel2 this.addjtf2 this.addjb_input this.addWindowListenernew WindowAdapter public void windowClosingWindowEvent e System.exit0 jb_input.addActionListenernew InputActionListener Object title 访问序列Cache块0 Cache块1 Cache块2Cache块3 状态 dtm new DefaultTableModeltitle 0 jt new JTabledtm
jsp new JScrollPanejt
jsp.setBounds50 80 440 197
jsp.setBackgroundColor.black this.addjsp class InputActionListener implements ActionListener public void actionPerformedActionEvent e ifjtf2.getText.equals Object options OK JOptionPane.showOptionDialognull 你的输入存在“”,请按提示输入! 警告 JOptionPane.DEFAULT_OPTIONJOptionPane.WARNING_MESSAGE null options options0 list ifcount 4 //count记录装入cache块的页面数 switchcount case 0://cache块中没有装入页面的情况 dtm.addRownew Objectjtf2.getTextjtf2.getText 装入 time2 time3 time4 count jtf2.setText jlabel2.setText请输入第 list 个访问页面: break case 1://cache块中装入一个页面的情况 ifjtf2.getText.equalsjt.getValueAtlist-3 1//要访问的页面刚好在cache0中 dtm.addRownew Objectjtf2.getTextjt.getValueAtlist-3 1 命中 time2 time3 time4 jtf2.setText jlabel2.setText请输入第 list 个访问页面: else //要访问的页面不在cache块中 dtm.addRownew Objectjtf2.getTextjt.getValueAtlist-3 1 jtf2.getText 装入 time1 time2 0 time3 time4 count jtf2.setText jlabel2.setText请输入第 list 个访问页面: break case 2://cache块中装入两个页面的情况 ifjtf2.getText.equalsjt.getValueAtlist-3 1//要访问的页面刚好在cache0中 dtm.addRownew Objectjtf2.getTextjt.getValueAtlist-3 1 jt.getValueAtlist-3 2 命中 time1 0 time2 time3 time4 jtf2.setText jlabel2.setText请输入第 list 个访问页面: else ifjtf2.getText.equalsjt.getValueAtlist-32 //要访问的页面刚好在cache1中 dtm.addRownew Objectjtf2.getTextjt.getValueAtlist-3 1 jt.getValueAtlist-3 2 命中 time1 time2 0 time3 time4 jtf2.setText jlabel2.setText请输入第 list 个访问页面: else //要访问的页面不在cache块中 dtm.addRownew Objectjtf2.getTextjt.getValueAtlist-3 1 jt.getValueAtlist-3 2 jtf2.getText 装入 time1 time2 time3 0 time4 count jtf2.setText jlabel2.setText请输入第 list 个访问页面: break case 3://cache块中装入三个页面的情况 ifjtf2.getText.equalsjt.getValueAtlist-3 1//要访问的页面刚好在cache0中 dtm.addRownew Objectjtf2.getTextjt.getValueAtlist-3 1 jt.getValueAtlist-3 2jt.getValueAtlist-3 3 命中 time1 0 time2 time3 time4 jtf2.setText jlabel2.setText请输入第 list 个访问页面: else ifjtf2.getText.equalsjt.getValueAtlist-32 //要访问的页面刚好在cache1中 dtm.addRownew Objectjtf2.getTextjt.getValueAtlist-3 1 jt.getValueAtlist-3 2jt.getValueAtlist-3 3 命中 time1 time2 0 time3 time4 jtf2.setText jlabel2.setText请输入第 list 个访问页面: else ifjtf2.getText.equalsjt.getValueAtlist-33 //要访问的页面刚好在cache2中 dtm.addRownew Objectjtf2.getTextjt.getValueAtlist-3 1 jt.getValueAtlist-3 2jt.getValueAtlist-3 3 命中 time1 time2 time3 0 time4 jtf2.setText jlabel2.setText请输入第 list 个访问页面: else //要访问的页面不在cache块中 dtm.addRownew Objectjtf2.getTextjt.getValueAtlist-3 1 jt.getValueAtlist-3 2jt.getValueAtlist-3 3 jtf2.getText 装入 time1 time2 time3 time4 0 count jtf2.setText jlabel2.setText请输入第 list 个访问页面: break else //四个cache块都装满的情况 ifjtf2.getText.equalsjt.getValueAtlist-3 1 //要访问的页面刚好在cache0中 dtm.addRownew Objectjtf2.getTextjt.getValueAtlist-3 1 jt.getValueAtlist-3 2jt.getValueAtlist-3 3 jt.getValueAtlist-3 4 命中 System.out.println1 time1 0 time2 time3 time4 jtf2.setText jlabel2.setText请输入第 list 个访问页面: else ifjtf2.getText.equalsjt.getValueAtlist-32 //要访问的页面刚好在cache1中 dtm.addRownew Objectjtf2.getTextjt.getValueAtlist-3 1 jt.getValueAtlist-3 2jt.getValueAtlist-3 3 jt.getValueAtlist-3 4 命中 System.out.println2 time1 time2 0 time3 time4 jtf2.setText jlabel2.setText请输入第 list 个访问页面: else ifjtf2.getText.equalsjt.getValueAtlist-33 //要访问的页面刚好在cache2中 dtm.addRownew Objectjtf2.getTextjt.getValueAtlist-3 1 jt.getValueAtlist-3 2jt.getValueAtlist-3 3 jt.getValueAtlist-3 4 命中 System.out.println3 time1 time2 time3 0 time4 jtf2.setText jlabel2.setText请输入第 list 个访问页面: else ifjtf2.getText.equalsjt.getValueAtlist-34 //要访问的页面刚好在cache3中 dtm.addRownew Objectjtf2.getTextjt.getValueAtlist-3 1 jt.getValueAtlist-3 2jt.getValueAtlist-3 3 jt.getValueAtlist-3 4 命中 System.out.println4 time1 time2 time3 time4 0 jtf2.setText jlabel2.setText请输入第 list 个访问页面: else //要访问的页面不在cache块中 iftime1time2 time1time3 time1time4 //如果cache0的页面最长时间没有被访问,新页面置换cache0中页面 dtm.addRownew Objectjtf2.getTextjtf2.getText jt.getValueAtlist-3 2 jt.getValueAtlist-3 3jt.getValueAtlist-3 4 置换 time1 0 time2 time3 time4 jtf2.setText jlabel2.setText请输入第 list 个访问页面: else iftime2time1 time2time3 time2time4//如果cache1的页面最长时间没有被访问,新页面置换cache1中页面 dtm.addRownew Objectjtf2.getTextjt.getValueAtlist-3 1 jtf2.getText jt.getValueAtlist-3 3jt.getValueAtlist-3 4 置换 time1 time2 0 time3 time4 jtf2.setText jlabel2.setText请输入第 list 个访问页面: else iftime3time1 time3time2 time3time4//如果cache2的页面最长时间没有被访问,新页面置换cache2中页面 dtm.addRownew Objectjtf2.getTextjt.getValueAtlist-3 1 jt.getValueAtlist-3 2 jtf2.getTextjt.getValueAtlist-3 4 置换 time1 time2 time3 0 time4 jtf2.setText jlabel2.setText请输入第 list 个访问页面: else iftime4time1 time4time2 time4time3//如果cache3的页面最长时间没有被访问,新页面置换cache3中页面 dtm.addRownew Objectjtf2.getTextjt.getValueAtlist-3 1 jt.getValueAtlist-3 2jt.getValueAtlist-3 3 jtf2.getText 置换 time1 time2 time3 time4 0 jtf2.setText jlabel2.setText请输入第 list 个访问页面: