




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
合工大页面置换算法操作系统课程设计报告计算机与信息学院《操作系统综合设计》报告设计题目:页面置换算法学生姓名:学号:专业班级:计算机科学与技术班2015年X月一、设计题目3二、开发环境与工具3三、设计原理31.最佳(Optimal)置换算法32.先进先出(FIFO)页面置换算法43.最近最久未使用(LRU)页面置换算法4四、重要算法51.算法流程图52.关键代码8五、设计结果22六、设计体会24七、附录24一、设计题目第15题:页面置换算法1.建立相应的数据结构;
2.在屏幕上显示页面的状况;
3.时间的流逝可以用下面几种方法模拟:
(a)按键盘,每按一次可以认为过一个时间单位;
(b)相应WM_TIMER;
4.将一批页的置换情况存入磁盘文件,以后可以读出并重放;
5.计算页面的缺页次数、缺页后的页面置换次数;
6.支持算法:FIFO、LRU、最佳置换算法。二、开发环境与工具开发环境:Windows开发工具:VC6.0、Eclipse三、设计原理1.最佳(Optimal)置换算法最佳置换算法是由Belady于1966年提出的一种理论上的算法。其所选择的被淘汰页面将是以后永不使用的,或是在未来最长时间内不再被访问的页面。采用最佳置换算法通常可以保证获得最低的缺页率,但由于人们目前还无法预知,一个进程在内存的若干个页面中,哪一个页面是未来最长时间内不再被访问的,因而该算法是无法实现的,但可以用该算法去评价其他算法。现举例说明如下:假定系统为某进程分配了三个物理快,并考虑有以下的页面号引用串:7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1进程运行时,先将7,0,1三个页面放入内存。以后,当进程要访问页面2时,将会产生缺页中断。此时OS根据最佳置换算法将将选择页面7予以淘汰。这是因为页面0将作为第5个被访问的页面,页面1是第14个被访问的页面,而页面7则要在第18次页面访问是才需调入。下次访问页面0时,因它已在内存而不必产生缺页中断。当进程访问页面3时,又讲引起页面1被淘汰;
因为它在现在的1,2,0三个页面中,将是以后最晚才被访问的。图1示出了采用最佳置换算法时的置换图。由图可以看出,采用最佳置换算法发生了6次页面置换。页面号70120304230321201701物理快1777222227物理快200004000物理快311333112.先进先出(FIFO)页面置换算法FIFO算法是最早出现的置换算法,该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最长的页面予以淘汰。该算法实现简单,只需要把已经调入内存的页面按先后次序排成一个队列,当发生缺页时,将队首页面出队,再将找到的页面入队,这样就完成了页面置换的任务。以书上的为例有如下表格:701203423032120170777222444000000077000033222221111101111003333322222但该算法与程序的运行规律不相适应,它忽视了程序运行的局部性原理。有可能造成需要访问的页面经常性的被置换。3.最近最久未使用(LRU)页面置换算法FIFO算法性能较差,它是根据页面进入的先后次序进行置换,并不能反映页面的使用情况。最近最久未使用(LRU)算法的基本思想是利用“最近的过去”来预测“最近的未来”,这个也是根据程序运行的局部性原理。由于最佳置换算法只有理论价值,实际系统中是无法使用的,所以就利用最近的过去来预测未来。该算法每访问一个字段,记录一个自上次以来被访问以来所经历的时间t。当需要淘汰一个页面时,选择所有页面中t值最大的,即最近最久未使用的页面予以置换。
以书上为例,有如下表格:
701203423032120170777222444000111111000000033333300001113322222222277四、重要算法1.算法流程图FIFO算法流程图:
Yi++把p的内容直接装入最上面一个空内存块,i++把page中最先装入的页面置换出去.i++Page是否有空当前p中第i个元素是否已在内存中页面走向存入数组p中,内存块用page表示初始化为0开始NYN输出当前内存块状态结束LRU算法流程图:开始页面走向存入数组p中,内存块用page表示初始化为0Y当前p中第i个元素是否已在内存i++NNPage是否有空Y结束把p的内容直接装入最上面一个空内存块,i++输出当前内存块状态把page中最近最久未使用的页面置换出去.i++OPT算法流程图:开始Yi++结束输出当前内存块状态把page中以后一段时间都不使用或是使用时间离现在最远的换出.i++把p的内容直接装入最上面一个空内存块,i++Page是否有空当前p中第i个元素是否已在内存页面走向存入数组p中,内存块用page表示初始化为0NNY2.关键代码1.FIFO算法代码:
publicclassFIFOControl{//privateintnum={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};//使用无参构造函数privateintnum=newint;privateintnumLength;privateintpg=newint;privateinttimepg=newint;privateintPageNum;publicintstore;FIFOControl{this.PageNum=3;numLength=20;intnumtemp={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};for{num=numtemp;}for{pg=-1;timepg=1;}store=newint;for{for{store=-1;}}for{store=0;}}FIFOControl//参数:1.物理块数2.页面序列号3.页面序列号数组长度meiyong{this.PageNum=nump;numLength=nlength;for{num=n;}for{pg=-1;timepg=1;}store=newint;for{for{store=-1;}}for{store=0;}}privatebooleancheckInPage{for{timepg++;}for{if{returntrue;}}returnfalse;}privatevoidcaculate{//将物理页框装满inttimer=0;//横着的指针for{pg=num;for//加时间{timepg++;}for//数据放到store中去{store=pg;}timer++;}//把后面的数据按先进先出的顺序放到物理块中for{if)//如果在物理框中将对应位时间置为1{for//把这次物理块中的数据存储起来{store=pg;}timer++;}else//否则找出时间最长的,将其置换,并将对应位的时间置为1{intmax=timepg;intmaxvalue=pg;intmaxindex=0;inttemp;for//找到时间最大的物理块{temp=timepg;if{max=temp;maxvalue=pg;maxindex=n;}}//System.out.println;//System.out.println;pg=num;timepg=1;for//把这次的数据存储起来{store=pg;}store=maxindex+1;timer++;}}//测试查看结果//for//seshi//{//for//{//System.out.print;//}//System.out.println;//}}publicintgetStore{this.caculate;returnstore;}publicclassFIFOControl{//privateintnum={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};//使用无参构造函数privateintnum=newint;privateintnumLength;privateintpg=newint;privateinttimepg=newint;privateintPageNum;publicintstore;FIFOControl{this.PageNum=3;numLength=20;intnumtemp={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};for{num=numtemp;}for{pg=-1;timepg=1;}store=newint;for{for{store=-1;}}for{store=0;}}FIFOControl//参数:1.物理块数2.页面序列号3.页面序列号数组长度meiyong{this.PageNum=nump;numLength=nlength;for{num=n;}for{pg=-1;timepg=1;}store=newint;for{for{store=-1;}}for{store=0;}}privatebooleancheckInPage{for{timepg++;}for{if{returntrue;}}returnfalse;}privatevoidcaculate{//将物理页框装满inttimer=0;//横着的指针for{pg=num;for//加时间{timepg++;}for//数据放到store中去{store=pg;}timer++;}//把后面的数据按先进先出的顺序放到物理块中for{if)//如果在物理框中将对应位时间置为1{for//把这次物理块中的数据存储起来{store=pg;}timer++;}else//否则找出时间最长的,将其置换,并将对应位的时间置为1{intmax=timepg;intmaxvalue=pg;intmaxindex=0;inttemp;for//找到时间最大的物理块{temp=timepg;if{max=temp;maxvalue=pg;maxindex=n;}}//System.out.println;//System.out.println;pg=num;timepg=1;for//把这次的数据存储起来{store=pg;}store=maxindex+1;timer++;}}}publicintgetStore{this.caculate;returnstore;}2.LRU算法代码:
publicclassLRUControl{//privateintnum={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};//使用无参构造函数privateintnum=newint;//使用有参构造函数privateintnumLength;privateintPageNum;privatePagepg=newPage;publicintstore;publicinttemp1;LRUControl{PageNum=3;numLength=num.length;store=newint;for{pg=newPage;if{this.pg.setValue;this.pg.setTime;}else{System.out.println;}}}LRUControl//参数:1.物理块数2.页面序列号3.页面序列号数组长度meiyong{this.PageNum=nump;numLength=nlength;for{num=n;}store=newint;//gaidongtemp1=newint;for{pg=newPage;if{this.pg.setValue;this.pg.setTime;}else{System.out.println;}}}privatebooleancheckInPage{for{p.setTime+1);}for{if){returntrue;}}returnfalse;}voidcaculate{inttimer=0;//前PageNum个,先将物理快装满for{pg.setValue;pg.setTime;for{pg.setTime+1);}for{store=pg.getValue;}timer++;}for{store=0;}//num数组后面的页面检查每一个是否在前面出现过,有置该页框时间为1,没有则在原基础上加1for{if)//如果在物理框中将对应位时间置为1{for//把num和pg中相等的物理块时间置1{if){pg.setTime;break;}}for//把这次物理块中的数据存储起来{store=pg.getValue;}store=0;timer++;}else//否则找出时间最长的,将其置换,并将对应位的时间置为1{intmax=pg.getTime;intmaxindex=0;inttemp;for//找到时间最大的物理块{temp=pg.getTime;if{max=temp;maxindex=n;}}//System.out.println;//System.out.println;pg.setTime;pg.setValue;for//把这次的数据存储起来{store=pg.getValue;}store=maxindex+1;timer++;}}}voiddisplay{for{for{System.out.print;}System.out.println;}}privatevoidadjustStore{for{for{temp1=store;}}for{temp1=store;}}publicintgetStore{adjustStore;returntemp1;}}3.OPT算法代码:
intOptimal{//参数intmax;//未来最长时间内不被访问的页面距下次被访问的时间intmax_page;//未来最长时间内不被访问的页面号intmemory_null;//内存中的空位号intlack=0;//记录缺页次数//intprocess=newint;//记录置换过程Memorymemory=newMemory;//创建内存//记录置换过程数组初始化for{for{process=-1;}}//内存块初始化for{memory=newMemory;memory.page=-1;memory.next=0;}for{//依次读取页面System.out.println;if){//System.out.println;//记录process=0;//没有置换for{process=process;}}else{//memory_null=isNull;//获取内存中的空位号if{////获取各内存块中页面距下次被访问的时间for{memory.next=nextAccess;}//输出各内存块中页面距下次被访问的时间System.out.print;for{System.out.print;}System.out.println;//获取未来最长时间内不被访问的页面号max=memory.next;max_page=0;for{if{max=memory.next;max_page=j;}}//将未来最长时间内不被访问的页面号置换为新页面System.out.println;memory.page=page;//置换lack++;//更新缺页次数//记录process=max_page+1;//发生置换process=page;for{if{process=process;}}}else{//System.out.println;memory.page=page;//将新页面放入内存块的空位中for{System.out.print;}System.out.println;//记录process=0;//没有置换process=page;for{if{if{process=process;}else{process=-1;}}}}}}System.out.println;System.out.printlnlack/page_num);System.out.println;for{for{System.out.print;}System.out.println;}return0;}五、设计结果图1页面号文件图2读入页面号图3自动运行图4单步运行六、设计体会本次课程设计不仅让我对操作系统这门课程有了更深入的研究、对很多重要的概念有了巩固和掌握。通过努力,三个页面置换算法程序都已经完成。虽然自己所做的很少也不够完善,但毕竟也是努力的结果。主要有以下几点收获:
1.通过对上网和看书查阅相关资料,使自己对JAVA语言的基本框架有新的了解,加深了对可视化程序的认识。
2.在使用Java语言来实现功能时,不像以往用的其他语言,它比较简练,更容易理解,实用性很强。
3.先进先出页面置换和LRU以及OPT算法各有特点,但是实践起来却很大,使自己对页面置换算法有了新的认识。
另外,和同学的合作也让我收获了许多,本来做界面是我的短板,但却是同学的强项,和他合作让我在这方面也有很大收获,学到了不少东西。七、附录代码:第一个FIFOControl.javapublicclassFIFOControl{//privateintnum={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};//使用无参构造函数privateintnum=newint;privateintnumLength;privateintpg=newint;privateinttimepg=newint;privateintPageNum;publicintstore;FIFOControl{this.PageNum=3;numLength=20;intnumtemp={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};for{num=numtemp;}for{pg=-1;timepg=1;}store=newint;for{for{store=-1;}}for{store=0;}}FIFOControl//参数:1.物理块数2.页面序列号3.页面序列号数组长度meiyong{this.PageNum=nump;numLength=nlength;for{num=n;}for{pg=-1;timepg=1;}store=newint;for{for{store=-1;}}for{store=0;}}privatebooleancheckInPage{for{timepg++;}for{if{returntrue;}}returnfalse;}privatevoidcaculate{//将物理页框装满inttimer=0;//横着的指针for{pg=num;for//加时间{timepg++;}for//数据放到store中去{store=pg;}timer++;}//把后面的数据按先进先出的顺序放到物理块中for{if)//如果在物理框中将对应位时间置为1{for//把这次物理块中的数据存储起来{store=pg;}timer++;}else//否则找出时间最长的,将其置换,并将对应位的时间置为1{intmax=timepg;intmaxvalue=pg;intmaxindex=0;inttemp;for//找到时间最大的物理块{temp=timepg;if{max=temp;maxvalue=pg;maxindex=n;}}//System.out.println;//System.out.println;pg=num;timepg=1;for//把这次的数据存储起来{store=pg;}store=maxindex+1;timer++;}}//测试查看结果//for//seshi//{//for//{//System.out.print;//}//System.out.println;//}}publicintgetStore{this.caculate;returnstore;}}2.第二个LRUControl.javapublicclassLRUControl{//privateintnum={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};//使用无参构造函数privateintnum=newint;//使用有参构造函数privateintnumLength;privateintPageNum;privatePagepg=newPage;publicintstore;publicinttemp1;LRUControl{PageNum=3;numLength=num.length;store=newint;for{pg=newPage;if{this.pg.setValue;this.pg.setTime;}else{System.out.println;}}}LRUControl//参数:1.物理块数2.页面序列号3.页面序列号数组长度meiyong{this.PageNum=nump;numLength=nlength;for{num=n;}store=newint;//gaidongtemp1=newint;for{pg=newPage;if{this.pg.setValue;this.pg.setTime;}else{System.out.println;}}}privatebooleancheckInPage{for{p.setTime+1);}for{if){returntrue;}}returnfalse;}voidcaculate{inttimer=0;//前PageNum个,先将物理快装满for{pg.setValue;pg.setTime;for{pg.setTime+1);}for{store=pg.getValue;}timer++;}for{store=0;}//num数组后面的页面检查每一个是否在前面出现过,有置该页框时间为1,没有则在原基础上加1for{if)//如果在物理框中将对应位时间置为1{for//把num和pg中相等的物理块时间置1{if){pg.setTime;break;}}for//把这次物理块中的数据存储起来{store=pg.getValue;}store=0;timer++;}else//否则找出时间最长的,将其置换,并将对应位的时间置为1{intmax=pg.getTime;intmaxindex=0;inttemp;for//找到时间最大的物理块{temp=pg.getTime;if{max=temp;maxindex=n;}}//System.out.println;//System.out.println;pg.setTime;pg.setValue;for//把这次的数据存储起来{store=pg.getValue;}store=maxindex+1;timer++;}}}voiddisplay{for{for{System.out.print;}System.out.println;}}privatevoidadjustStore{for{for{temp1=store;}}for{temp1=store;}}publicintgetStore{adjustStore;returntemp1;}}3.第三个和第二个关联的是第二个page类的实现Page.javapublicclassPage{privateinttime;privateintvalue;publicvoidsetTime{this.time=t;}publicvoidsetValue{this.value=v;}publicintgetTime{returnthis.time;}publicintgetValue{returnthis.value;}Page{time=0;value=0;}}4.第四个MyFrame.javaimportjava.awt.Color;importjava.awt.Dimension;importjava.awt.FileDialog;importjava.awt.Font;importjava.awt.Graphics;importjava.awt.TextArea;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.image.BufferedImage;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjavax.swing.ButtonGroup;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JRadioButton;importjavax.swing.JScrollPane;importjavax.swing.JSlider;importjavax.swing.JTextField;importjavax.swing.SwingConstants;//页面置换算法publicclassMyFrameextendsJFrameimplementsActionListener,Runnable{intwidth=Toolkit.getDefaultToolkit.getScreenSize.width;//取得屏幕的宽度intheight=Toolkit.getDefaultToolkit.getScreenSize.height;//取得屏幕的高度intsize=10;//字体大小privateJTextFieldtextField1,textField2;privateJButtonbutton1,button2,button3,button4,button5,button6;privateJRadioButtonradioButton1,radioButton2;privateButtonGroupbuttongroup;privateJLabellabel1,label2,label3,label4,label5,label6;privateJLabellabel_page=newJLabel;privateJLabellabel_sign=newJLabel;//记录运行位置privateJLabellabel_memory=newJLabel;//记录内存块变化情况privateJLabellabel_memory_LRU=newJLabel;//记录内存块变化情况privateJLabellabel_memory_FIFO=newJLabel;//记录内存块变化情况privateJSliderslider;//滑动条privateJPanelpanel;privateJScrollPanescrollPane;//滚动面板//定义打开和保存对话框privateFileDialogopenDia,saveDia;privateTextAreatextArea;privateFilefile;privateFilesaveFile;//当前点击的按钮privateintbutton_chose=0;//记录自动运行当前运行到的位置privatestaticintlocation=0;Threadthread=newThread;//输入的页面号privateStringpage=newString;privateintpage_int=newint;//输入的页面号个数privateintpage_num=0;//内存块数privateintmemory_num=3;//最佳置换算法缺页次数privateintOptimal_lack=0;//记录置换过程privateintprocess_memory=newint;//创建LRU对象带入参数LRUControllru;intprocess_memory_LRU;//LRU置换算法缺页次数privateintOptimal_lack_LRU=0;//FIFO//创建对象带入参数FIFOControlfifo;//创建一个数组用来接收数据intprocess_memory_FIFO;//FIFO置换算法缺页次数privateintOptimal_lack_FIFO=0;privateColorcolors={Color.cyan,Color.orange,Color.green,Color.pink,Color.yellow,Color.cyan,Color.orange,Color.green,Color.pink,Color.yellow,Color.cyan,Color.orange,Color.green,Color.pink,Color.yellow,Color.cyan,Color.orange,Color.green,Color.pink,Color.yellow,};MyFrame{//构造函数this.setTitle;this.setSize;this.setLocation/2,/2);this.setLayout;//设置布局方式label1=newJLabel;label1.setBounds;this.add;textField1=newJTextField;textField1.setBounds;this.add;button1=newJButton;button1.setBounds;button1.addActionListener;this.add;radioButton1=newJRadioButton;radioButton2=newJRadioButton;buttongroup=newButtonGroup;buttongroup.add;buttongroup.add;radioButton1.setBounds;radioButton2.setBounds;this.add;this.add;label2=newJLabel;label2.setBounds;this.add;slider=newJSlider;slider.setBounds;slider.setValue;//设置滑动条的初始值slider.setMajorTickSpacing;//设置主刻度标记的间隔slider.setMinorTickSpacing;//设置次刻度标记的间隔slider.setPaintTicks;//设置滑块绘制刻度标记,显示划分刻度的slider.setPaintLabels;slider.setSnapToTicks;this.add;//textArea=newTextArea;//textArea.setBounds;//this.add;panel=newJPanel;//panel.setBounds;panel.setBackground;panel.setPreferredSize);//主要是这句代码,设置panel的首选大小,同时保证宽高大于JScrollPane的宽高,这样下面的JScrollPane才会出现滚动条panel.setLayout;//设置panel的布局方式//this.add;scrollPane=newJScrollPane;scrollPane.setBackground;scrollPane.setBounds;scrollPane.setVerticalScrollBarPolicy;//scrollPane.getHorizontalScrollBar.setValue;//设置滚动条的水平位置//scrollPane.getVerticalScrollBar.setValue;//设置滚动条的竖直位置//this.add;this.getContentPane.add;label3=newJLabel;label3.setFont);label3.setBounds;panel.add;label4=newJLabel;label4.setFont);label4.setBounds;panel.add;label5=newJLabel;label5.setFont);label5.setBounds;panel.add;label6=newJLabel;label6.setFont);label6.setBounds;panel.add;button3=newJButton;button3.setBounds;button3.addActionListener;this.add;button4=newJButton;button4.setBounds;button4.addActionListener;this.add;button5=newJButton;button5.setBounds;button5.addActionListener;this.add;textArea=newTextArea;textArea.setText;textArea.setBounds;this.add;button6=newJButton;button6.setBounds;button6.addActionListener;this.add;this.setVisible;this.setResizable;//thread.start;for{for{label_memory=newJLabel;label_memory_LRU=newJLabel;label_memory_FIFO=newJLabel;}}//默认模式为FileDialog.LOADopenDia=newFileDialog;saveDia=newFileDialog;}//清空面板publicvoidremovePanel{panel.removeAll;//清空面板panel.add;panel.add;panel.add;panel.add;panel.repaint;//刷新面板}publicvoidactionPerformed{charch;Stringstr=““;//intpage2={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};//intpage_num=20;//intmemory_num=3;//Optimal;if==button1){//打开源文件removePanel;//清空面板openDia.setVisible;StringdirPath=openDia.getDirectory;//获取文件路径StringfileName=openDia.getFile;//获取文件名称//System.out.println;textField1.setText;//如果打开路径或目录为空则返回空ifreturn;//textArea.setText;//清空文本file=newFile;try{BufferedReaderbufr=newBufferedReader);Stringline=null;intn=0;while)。=null){//将输入的页面号保存到page数组中for;i++){ch=line.charAt;if{str=str+ch;if-1){//获取最后一个字符page=str;}}else{if){//page=Integer.parseInt;page=str;n++;str=““;}}ifbreak;}ifbreak;}bufr.close;page_num=n;System.out.println;for{//textArea.append;//if){label_page=newJLabel;label_page.setFont);label_page.setBounds;label_page.setOpaque;//设置其为不透明,才可以显示出背景颜色label_page.setBackground;label_page.setHorizontalAlignment;//内容居中panel.add;//}}panel.repaint;//刷新面板//将从文件中读入的页面号信息转化为整形for{try{page_int=Integer.parseInt;}catch{//e1.printStackTrace;JOptionPane.showMessageDialog;page_num=0;break;}}//获取内存块数//memory_num=slider.getValue;//System.out.println;//最佳置换算法//Optimal;}catch{thrownewRuntimeException;}}elseif==button3){//重置removePanel;//清空面板for{panel.add;//加入读入的页面信息}panel.repaint;//刷新面板location=0;}elseif==button4){//自动运行//button_chose=4;//获取内存块数memory_num=slider.getValue;//最佳置换算法Optimal;//LRUlru=newLRUControl;//调用对象的计算函数lru.caculate;//要传出的二维数组process_memory_LRU=newint;//调用对象返回参数方法process_memory_LRU=lru.getStore;System.out.println;for{for{System.out.print;}System.out.println;}//FIFOfifo=newFIFOControl;process_memory_FIFO=newint;process_memory_FIFO=fifo.getStore;System.out.println;for{for{System.out.print;}System.out.println;}if{JOptionPane.showMessageDialog;}else{removePanel;//清空面板for{panel.add;//加入读入的页面信息}panel.repaint;//刷新面板newThread{publicvoidrun{button4.setEnabled;//将自动运行按钮设置为不可点击,防止因多次点击而造成显示混乱button5.setEnabled;//根据内存块的多少动态调整各显示标签的位置intfrist_y=0;if{frist_y=memory_num-4;label5.setBounds;label6.setBounds;}else{label5.setBounds;label6.setBounds;}scrollPane.getHorizontalScrollBar.setValue;//设置滚动条的水平位置Optimal_lack=0;//最佳置换缺页数置零Optimal_lack_LRU=0;//LRU缺页数置零Optimal_lack_FIFO=0;//FIFO缺页数置零//绘制页面置换情况for{label_sign.setBounds;label_sign.setHorizontalAlignment;//内容居中panel.add;//最佳置换算法for{if{//内存块为空label_memory.setText;}else{label_memory.setText;//process_memory+““}label_memory.setBounds;label_memory.setHorizontalAlignment;//内容居中label_memory.setOpaque;//设置其为不透明,才可以显示出背景颜色if{//发生置换且当前内存块为发生置换的内存块label_memory.setBackground;Optimal_lack++;//发生置换,缺页数加一}else{label_memory.setBackground;}panel.add;}//LRUfor{//System.out.println;if{//内存块为空label_memory_LRU.setText;}else{label_memory_LRU.setText;//process_memory+““}label_memory_LRU.setBounds+20*j,30,20);label_memory_LRU.setHorizontalAlignment;//内容居中label_memory_LRU.setOpaque;//设置其为不透明,才可以显示出背景颜色if{//发生置换且当前内存块为发生置换的内存块label_memory_LRU.setBackground;Optimal_lack_LRU++;//发生置换,缺页数加一}else{label_memory_LRU.setBackground;}panel.add;}//FIFOfor{if{//内存块为空label_memory_FIFO.setText;}else{label_memory_FIFO.setText;//process_memory+““}label_memory_FIFO.setBounds+20*j,30,20);label_memory_FIFO.setHorizontalAlignment;//内容居中label_memory_FIFO.setOpaque;//设置其为不透明,才可以显示出背景颜色if{//发生置换且当前内存块为发生置换的内存块label_memory_FIFO.setBackground;Optimal_lack_FIFO++;//发生置换,缺页数加一}else{label_memory_FIFO.setBackground;}panel.add;}if{//输出超过一定范围时,滚动条随显示输出动态变化scrollPane.getHorizontalScrollBar.setValue);//设置滚动条的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全包水电合同协议书范本
- AI语音助手行业创业计划书
- 天气课件创意说明
- 电铲大修合同协议书模板
- 青年文化教育教案
- 榴客商业计划书
- 中国空气源热泵阀件行业市场前景预测及投资价值评估分析报告
- 2025年变压器用阀门市场调研报告
- 业务转包合同协议书
- 员工强制终止合同协议书
- 2025年财务管理全球经济试题及答案
- 2025-2030年芳纶纤维行业市场深度调研及发展趋势与投资研究报告
- 转让亚马逊店铺合同协议
- 2024年滨州市沾化区区属国有企业招聘考试真题
- 纺织机械操作知识掌握策略试题及答案
- 烟台科目一试题及答案
- 2025-2030沥青再生行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 5《有话好好说》(教案)-大象版心理健康四年级
- 【高中英语】2025年高考英语作文预测(10大主题+55篇范文)下
- 《铁路技术管理规程》(普速铁路部分)
- (完整)北京版小学英语1至6年级词汇(带音标)
评论
0/150
提交评论