




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作系统课程设计报告院(系):计算机工程学院专业:计算机科学与技术专业题目:模拟请求分页调度算法_____学生姓名:班级:学号:起迄日期:设计地点:指导教师:课程设计目的操作系统是管理计算机硬件的软件。它也为应用程序提供一个基础,在计算机用户与计算机硬件之间扮演一个中间者的角色。在完成操作系统各部分实验的基础上,对操作系统的整体进行一个模拟,通过实践加深对各个部分的管理功能的认识,还能进一步分析各个部分之间的联系,最后达到对完整系统的理解。本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握多道程序设计基本技能。研究计算机操作系统的基本原理和算法,掌握操作系统的进程管理、存储管理、文件管理和设备管理的基本原理与主要算法。目的是使学生掌握常用操作系统的一般管理方法,了解它是如何组织和运作的,对操作系统的核心概念和算法有一个透彻的理解,并对系统运行的机制有一个全面的掌握,从而充分理解系统调用与程序设计之间的关系。由于本课程设计比较复杂,因此也锻炼了同学们在编程方面的能力和解决实际问题的能力,在软件开发方面,也提高了创新的能力;由于在设计的同时必须查阅大量的资料和书籍,所以也锻炼的调查研究查阅技术文献以及编写软件设计文档的能力。课程设计内容在进程运行过程中,当所要访问的页面不在内存时,则应将它调入内存。假如在此时内存已无空闲空间,则应选择一页调出。将哪个页面调出,则须根据一定的算法来确定。需要调入页面时,选择内存中哪个物理页面被置换。把未来不再使用的或短期内较少使用的页面调出,通常只能在局部性原理指导下依据过去的统计数据进行预测。模拟仿真请求分页调度算法OPT、FIFO、LRU、LFU、CLOCK等模拟页面调度算法,并提供性能比较分析功能。通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解。熟悉虚存管理的各种页面淘汰算法。通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。系统分析与设计系统分析操作系统中的请求分页系统是建立在基本分页基础上的,为了能支持虚拟存储功能而增加了调页功能和页面置换功能。每当程序所要访问的页面未在内存时,便向CPU发出一缺页中断,中断处理程序首先保留CPU环境,分析中断原因后转入缺页中断处理程序。该程序通过查找页表后,得到该页在外存的物理块后,如果此时内存能容纳新页,则启动磁盘I/O将所却之页调入内存,然后修改页表。如果内存已满,则须先按照某种置换算法从内存中选出一页准备换出;如果该页未被修改,可不必将该页写回磁盘;但如果此页已被修改,则必须将它写回磁盘,然后再把所缺的也调入内存,并修改页表中的相应表项,置其存在位为“1”,并将此页表项写入快表中。在缺页调入内存后,利用修改后的页表,去形成所要访问数据的物理地址,再去访问内存数据。整个页面的调入过程对用户是透明的。2、系统设计:在运行过程中,若其所要访问的页面不再内存而需把它们掉入内存,应将哪个页面调出需根据一定的算法来确定,置换算法的好坏将直接影响到系统的性能。一个好的页面置换算法应具有较低的页面更换频率。从理论上讲,应将那些以后不会再访问的页面换出,或把那些再较长时间内不会再访问的页面调出。①最佳置换算法(Optimal):它是由Belady于1966年提出的一种理论上的算法。其所选择的被淘汰页面,将是以后永不使用的或许是在最长(未来)时间内不再被访问的页面。采用最佳置换算法,通常可保证获得最低的缺页率。但由于人目前还无法预知一个进程在内存的若干个页面中,哪一个页面是未来最长时间内不再被访问的,因而该算法是无法实现的,便可以利用此算法来评价其它算法。②先进先出(FIFO)页面置换算法:这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单只需把一个进程已调入内存的页面,按先后次序链接成一个队列,因此对首总是最先进去的页面,这样置换总是位于队首的一页。③LRU置换算法:最近最久未使用(LRU)置换算法,是根据页面调入内存后的使用情况进行决策的。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法是选择最近最久未使用的页面予以淘汰。该算法可利用一个特殊的栈来保存当前使用的各个页面的页面号,每当进程访问某页面时,便将该页面的页面号从该栈中移出,将它压入栈顶。因此,栈顶始终是最新被访问页面的编号,而栈底则是最近最久未使用的页面。④CLOCK置换算法:简单CLOCK置换算法只需为每页设置一位访问位,当页面被访问时,其访问位置1.置换算法在选择一位淘汰时,只需检查页的访问位。如果是0,则选择该页换出,如果是1,则重新将它置为0,暂不换出,而给该页第二次驻留内存的机会,在按照FIFO算法检查第一个页面。LRU算法是较好的一种算法,而由于LRU在硬件上要求较多,在实际应用中多采用LRU的近似算法。CLOCK算法就是用得较多的一种LRU近似算法。⑤最少使用(LFU:LeastFrequentlyUsed)置换算法:在采用该算法时,应为在内存中的每个页面设置一个二维数组来记录每个页面被访问的频率。该置换算法选择在最近时期使用最少的页面为淘汰页。3、模块设计:1)涉及的抽象数据类型集合(ArrayList):集合可以随着元素的增加而自定增加长度,也可删除指定的元素,在指定的位置增加元素。队列(Queue):定义了一个可以先进先出的数组,进入时在队尾加入,出队时只能是队首。栈(Stack):定义了一个先进后出的数组,进栈和出栈都是在栈顶执行的。二维数组:定义了第二维的元素就是第一维元素的标志位。2)主程序的流程以及模块之间的层次关系图1:程序模块图4、数据结构说明:集合:定义了用来存放所有页面索引号的序列的一个集合,同时也定义了一个表示物理快的集合,用来存放内存中物理块所存放的页面号,在使用过程中可以随时增加和删除,用在页面置换时,可以在指定位置增加和删除元素。队列:定义了一个与内存物理块容量相同的队列,同内存快一样用来存放页面号,充分体现类先进先出的作用,在FIFO算法中可以随时找出要置换的页面号,即位于队首的页面。栈:定义了一个与内存物理块容量相同的队列,同内存快一样用来存放页面号。每当进程访问某页面时,便将该页面的页面号从栈中移出,将它压入栈顶。因此,栈顶始终是最新被访问页面的编号,而栈底则是最近最久未使用的页面号。二维数组:在Clock算法中,定义一个二维数组,即给在内存中的每个页面号都定义一个访问位,在根据算法来找到要置换的页面号;在LFU算法中定义一个二维数组,给每个页面号都定义一个访问位来计算被访问的频率,最后比较频率来得出应该被置换的页面号。5、算法流程图:主程序流程图:图2:主程序流程图实现各个算法的流程图:图3:FIFO算法流程图图4:OPT算法程序流程图图5:LRU算法程序流程图图6:Clock算法程序流程图图7:LFU算法流程图四、模块调试与系统测试1、模块调试输入的数据可以通过自动产生随机数获得,也可以通过输入获得。自动产生的随机数是为16个1~9的随机int型数,而输入获得的数则是小于或等于16个的1~9的int型数。如果输入的是字符或超过了1~9的范围则会出现错误提示,并且在清除后可在重新输入。输出是1~9的页面号,即输出在访问每个页面时内存中物理块的页面号的情况,同时也输出每种算法的缺页次数和缺页率,以及每个算法的基本性能。程序所能达到的基本功能是根据所选的算法输出运用该算法在内存中的页面调度情况,并根据缺页情况算出该算法的缺页率,同时给出该算法的一些基本特点。在提供索引号的时候可以通过随机获取,也可以自行输入,并且可以随时清除所输入或显示的内容,并可以无限循环的展现不同索引序列所表示的不同页面调度情况。2、系统测试测试方法黒盒测试测试报告:表一:测试分析表测试数据输入预期输出结果实际输出结果是否符合预定结果随机输入:4514417346448482得到正确的索引号(1~9)序列,在选择不同的算法条件下输出正确的页面调度情况,以及正确的缺页率索引号序列正确,页面调度情况正确,缺页率也正确符合预定结果固定输入:2452673得到正确的索引号(1~9)序列,在选择不同的算法条件下输出正确的页面调度情况,以及正确的缺页率索引号序列正确,页面调度情况正确,缺页率也正确符合预定结果固定输入:24674812系统提示:输入格式错误,输入1~9的数系统提示:输入格式错误,输入1~9的数符合预定结果固定输入:2464dr6系统提示:输入格式错误,输入1~9的数系统提示:输入格式错误,输入1~9的数符合预定结果在未输入索引号的情况下选择算法系统提示:还未得到索引号系统提示:还未得到索引号符合预定结果3、调试分析:1)在实现LRU算法时,要将栈中指定的元素移到栈顶,但是一开始这个方法在运行到一定的页面序列后会出现索引越界的异常,通过与同学一晚上的讨论,最后修改了一下算法,从而算法能够准确的实现。2)在实现Clock算法时,一开始没考虑到每次置换页面后指针会下移一位,导致程序运行正确但结果错误,经过仔细研究,最后算法中加入了指针的移动才得到正确的结果。3)在计算缺页率时,由于访问页面次数不是固定的,得到的缺页率可能是一个无限循环的小数,因此经过在网上查找相关资料后用,用一个方法即可只输出小数点后两位。4)在增加了手动输入索引号后,要再次使用算法时会出现异常,经过加入异常捕获后,就可以循环输入索引号并使用算法了。5)在实现Clock算法时,由于语言限制无法使用指针和链表,致使算法实现的比较复杂,同时也限制了物理块的块数,因此不能增加随意选择物理块数的功能。五、用户手册本程序使用的平台是VisualStudio2008,需要安装该软件,直接双击安装即可。将本程序在VisualStudio2008中打开,然后点击“启动调试”即可运行出界面。eq\o\ac(○,1)如果想要获得随机的页面号序列,则直接点击按钮“得到随机索引号”即可,在相应的文本框中就会显示索引页面号,然后在“选择置换算法”下面的ComoBox控件下拉选项中选择所要用的算法,即可显示出页面调用情况以及该算法的缺页率和其基本特点。eq\o\ac(○,2)如果要有用户自己输入页面索引序列,则将“固定输入”控件选中,然后在“引用率”文本框中输入页面号序列(个数必须小于或等于16),然后按“得到索引号”按钮,最后选择同1一样选择算法即可。eq\o\ac(○,3)如果输入错误,则可以按“清空”按钮清除所有显示的内容。本程序可以循环使用得到不同的索引序列,以及不同的页面调度情况。六、程序清单列出主要/关键算法的程序清单,要求加上详细的程序注释(函数体/过程注释,与语句行注释)usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Collections;namespaceWindowsFormsApplication1{publicpartialclassForm1:Form{ArrayListpageOrder;//定义存放索引号序列的集合inttextchoice=0;//定义全局变量来确定将输出放到哪个文本框中doubleMissingRate;//声明缺页率的变量intpagecount;//定义所访问到的页面数变量TextBox[]text;//存放内存页面号的文本框的数组TextBox[]order;//存放索引号的文本框的数组privatedoublediseffect=0;//定义一个变量diseffect记录总共换入页面的次数。publicdoubleDiseffect{get{returndiseffect;}set{diseffect=value;}}//判断是否在内存中publicboolInmemory(ArrayLista,intt){for(inti=0;i<a.Count;i++){if((int)a[i]==t)returntrue;}returnfalse;}//判断内存是否已满publicboolIsFull(ArrayLista){if(a.Count==a.Capacity)returntrue;elsereturnfalse;}//若页面经过了置换则将内存中页面状况打印出来publicvoidPrint(ArrayLista){if(a.Count==1){text[textchoice].Text=a[0].ToString();textchoice+=3;}if(a.Count==2){text[textchoice].Text=a[0].ToString();textchoice++;text[textchoice].Text=a[1].ToString();textchoice+=2;}if(a.Count==3){for(inti=0;i<a.Count;i++){text[textchoice].Text=a[i].ToString();textchoice++;}}}//若没有发生页面置换则不打印页面publicvoidPrintp(ArrayLista){if(a.Count==1){text[textchoice].Text="";textchoice+=3;}if(a.Count==2){text[textchoice].Text="";textchoice++;text[textchoice].Text="";textchoice+=2;}if(a.Count==3){for(inti=0;i<a.Count;i++){text[textchoice].Text="";textchoice++;}}}#regionFIFO算法//FIFO置换算法publicvoidFIFOpage(){ArrayListpageList=newArrayList(3);Queuequ=newQueue(3);inttemp,m;try{if(txtpageorder.Text=="")//若未得到索引号,则抛出异常thrownewException();for(inti=0;i<pageOrder.Count;i++)//根据进程的页面号来访问页面{if(!Inmemory(pageList,(int)pageOrder[i]))//当前访问的页面号不在内存中{if(!IsFull(pageList))//内存未满{pageList.Add(pageOrder[i]);qu.Enqueue(pageOrder[i]);}else//内存已存满{temp=(int)qu.Dequeue();//得到要被置换出来的值qu.Enqueue(pageOrder[i]);m=pageList.IndexOf(temp);//得到被置换的位置pageList.RemoveAt(m);//从内存中取出pageList.Insert(m,pageOrder[i]);//放入到取出的位置Diseffect++;}Print(pageList);//打印内存页面情况}else//在内存中{Printp(pageList);}}textchoice=0;Missing_Rate();//计算缺页率//填充ListView控件listView1.Items[1].SubItems.Add(Convert.ToDouble(MissingRate).ToString("0.00")+"%");listView1.Items[1].SubItems.Add("利用历史信息,但不反映程序的局部性");MissingRate=0;}catch{MessageBox.Show("还没得到索引号","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);}}#endregion#regionLRU//将指定栈中的元素放到栈顶publicvoiddelete(Stacks,intnum){int[]a=newint[s.Count];s.CopyTo(a,0);inti=System.Array.IndexOf(a,num);//找到要删除元素的位置for(intp=i-1;p>=0;p--)//将找到的元素放到数组首位{a[p+1]=a[p];}a[0]=num;s.Clear();for(intn=a.Count()-1;n>=0;n--)//将数组复制到栈中{s.Push(a[n]);}}//LRU置换算法publicvoidLRUpage(){ArrayListpageList=newArrayList(3);Stackstack=newStack();inttemp,m;try{if(txtpageorder.Text=="")//若未得到索引号,则抛出异常thrownewException();for(inti=0;i<pageOrder.Count;i++)//根据进程的页面号来访问页面{if(!Inmemory(pageList,(int)pageOrder[i]))//当前访问的页面不在内存中{if(!IsFull(pageList))//内存未满{pageList.Add(pageOrder[i]);stack.Push(pageOrder[i]);}else//内存已存满{int[]array=newint[stack.Count];stack.CopyTo(array,0);temp=array[stack.Count-1];//得到要被置换出来的值m=pageList.IndexOf(temp);//得到被置换的位置delete(stack,temp);//将指定元素放到栈顶stack.Pop();stack.Push(pageOrder[i]);pageList.RemoveAt(m);//从内存中取出pageList.Insert(m,pageOrder[i]);//放入到取出的位置Diseffect++;}Print(pageList);}else//在内存中,就将该元素放到栈顶{delete(stack,(int)pageOrder[i]);Printp(pageList);}}textchoice=0;Missing_Rate();//计算缺页率//填充ListView控件listView1.Items[2].SubItems.Add(Convert.ToDouble(MissingRate).ToString("0.00")+"%");listView1.Items[2].SubItems.Add("计数器硬件较少,主存页面表可由软硬件实现修改,根据“历史”预测“未来”。");MissingRate=0;}catch{MessageBox.Show("还没得到索引号","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);}}#endregion#regionLFU//判断哪个页面是最少使用的publicintLeast_use(int[,]p,ArrayListlist){inttemp=p[(int)list[0]-1,1];//标志位intret=(int)list[0];//页面号for(inti=0;i<p.GetLength(0);i++){if(p[i,1]<temp&&list.Contains(p[i,0]))//找到内存中计数器值最小的页面号{temp=p[i,1];ret=p[i,0];//计数值最小的页面号}}returnret;}//LFU置换算法publicvoidLFUpage(){//PageOrder();ArrayListpageList=newArrayList(3);int[,]page=newint[9,2];for(intj=0;j<page.GetLength(0);j++)//为每个页面都定义一个访问位,初值为0{page[j,0]=j+1;page[j,1]=0;}inttemp,m;try{if(txtpageorder.Text=="")//若未得到索引号,则抛出异常thrownewException();for(inti=0;i<pageOrder.Count;i++){if(!Inmemory(pageList,(int)pageOrder[i]))//页面不在内存中{if(!IsFull(pageList))//内存未满{pageList.Add(pageOrder[i]);page[(int)pageOrder[i]-1,1]++;}else//内存已存满{temp=Least_use(page,pageList);//得到要被置换出来的值m=pageList.IndexOf(temp);//得到被置换的位置pageList.RemoveAt(m);//从内存中取出pageList.Insert(m,pageOrder[i]);//放入到取出的位置//页面置换后,将计数器清0for(intk=0;k<3;k++){page[(int)pageList[k]-1,1]=0;}page[(int)pageOrder[i]-1,1]++;//置换的页面标志计数器加1Diseffect++;}Print(pageList);}else//在内存中,就将该元素放到栈顶{page[(int)pageOrder[i]-1,1]++;Printp(pageList);}}textchoice=0;Missing_Rate();//计算缺页率//填充ListView控件listView1.Items[4].SubItems.Add(Convert.ToDouble(MissingRate).ToString("0.00")+"%");listView1.Items[4].SubItems.Add("淘汰一定时期内被访问次数最少的页。");MissingRate=0;}catch{MessageBox.Show("还没得到索引号","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);}}#endregion#regionOPT//判断哪个页面是以后最长时间内不用的publicintLong_Not_Use(ArrayListlist,ArrayListpa,intindex){//得到内存中每个页面在集合中的索引号inti=pa.IndexOf(list[0],index);intj=pa.IndexOf(list[1],index);intm=pa.IndexOf(list[2],index);//如果索引号小于0,则表示后面没有再用到该页面,即该页面为要置换的页面if(i<0)return(int)list[0];if(j<0)return(int)list[1];if(m<0)return(int)list[2];intma,max;//找到索引号最大的页面,即为未来最久不会用到的页面,也是应被置换的页面ma=j>m?j:m;max=i>ma?i:ma;if(max==i)return(int)list[0];if(max==j)return(int)list[1];elsereturn(int)list[2];}//置换算法OPTpublicvoidOPTpage(){ArrayListpageList=newArrayList(3);inttemp,m;try{if(txtpageorder.Text=="")//若未得到索引号,则抛出异常thrownewException();for(inti=0;i<pageOrder.Count;i++){if(!Inmemory(pageList,(int)pageOrder[i]))//页面不在内存中{if(!IsFull(pageList))//内存未满{pageList.Add(pageOrder[i]);}else//内存已存满{temp=Long_Not_Use(pageList,pageOrder,i);//得到要被置换出来的值m=pageList.IndexOf(temp);//得到被置换的位置pageList.RemoveAt(m);//从内存中取出pageList.Insert(m,pageOrder[i]);//放入到取出的位置Diseffect++;}Print(pageList);}else//在内存中{Printp(pageList);}}textchoice=0;Missing_Rate();//计算缺页率//填充控件listView1.Items[0].SubItems.Add(Convert.ToDouble(MissingRate).ToString("0.00")+"%");listView1.Items[0].SubItems.Add("命中率高,但难于实现,是理想算法。");MissingRate=0;}catch{MessageBox.Show("还没得到索引号","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);}}#endregion#region简单Clock算法//找到要置换的页面publicintfind_page(ArrayLista,int[,]p){inttemp=(int)a[0];for(inti=0;i<a.Count;i++){if(p[(int)a[i]-1,1]==0)//如果访问位为0,返回该页面号{temp=(int)a[i];break;}p[(int)a[i]-1,1]=0;//访问位为1,暂不换出,将访问位置0}returntemp;}publicvoidClock_page(){ArrayListpageList=newArrayList(3);ArrayListexchange=newArrayList(3);int[,]page=newint[9,2];for(intj=0;j<page.GetLength(0);j++)//为每个页面定义一个访问位{page[j,0]=j+1;page[j,1]=0;}inttemp,m,n;try{if(txtpageorder.Text=="")//若未得到索引号,则抛出异常thrownewException();for(inti=0;i<pageOrder.Count;i++){if(!Inmemory(pageList,(int)pageOrder[i]))//页面不在内存中{if(!IsFull(pageList))//内存未满{pageList.Add(pageOrder[i]);exchange.Add(pageOrder[i]);page[(int)pageOrder[i]-1,1]=1;//该页面的访问位置1}else//内存已存满{temp=find_page(exchange,page);//得到要被置换出来的值m=pageList.IndexOf(temp);//得到被置换的位置pageList.RemoveAt(m);//从内存中取出pageList.Insert(m,pageOrder[i]);//放入到取出的位置page[(int)pageOrder[i]-1,1]=1;//被置换进来的页面访问位置1n=exchange.IndexOf(temp);exchange.RemoveAt(n);exchange.Insert(n,pageOrder[i]);//exchange=pageList;//将被置换的位置的下一个页面作为下次循环的首次访问对象if(m==0){inth;h=(int)exchange[0];//h=(int)pageOrder[i];exchange[0]=exchange[1];exchange[1]=exchange[2];exchange[2]=h;}if(m==1){inth;h=(int)exchange[1];exchange[1]=exchange[0];exchange[0]=exchange[2];exchange[2]=h;}Diseffect++;}Print(pageList);}else//在内存中{page[(int)pageOrder[i]-1,1]=1;//页面在内存中,则访问位置1Printp(pageList);}}textchoice=0;Missing_Rate();//计算缺页率//填充控件listView1.Items[3].SubItems.Add(Convert.ToDouble(MissingRate).ToString("0.00")+"%");listView1.Items[3].SubItems.Add("使用硬件少,是一种LRU近似算法");MissingRate=0;}catch(NullReferenceException){MessageBox.Show("还没得到索引号","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);}}#endregion//计算缺页率,并输出publicvoidMissing_Rate(){doubled;d=Diseffect/pagecount*100;//计算缺页率txtMissing.Text=Diseffect.ToString();txtMissingRate.Text=Convert.ToDouble(d).ToString("0.00")+"%";//小数点后保留两位小数MissingRate=d;Diseffect=0;}publicForm1(){InitializeComponent();//将显示索引号序列的文本框放到一个数组中order=newTextBox[16]{text1,text2,text3,text4,text5,text6,text7,text8,text9,text10,text11,text12,text13,text14,text15,text16};//将显示内存中页面号的文本框放到一个数组中text=newTextBox[48]{txt1,txt2,txt3,txt4,txt5,txt6,txt7,txt8,txt9,txt10,txt11,txt12,txt13,txt14,txt15,txt16,txt17,txt18,txt19,txt20,txt21,txt22,txt23,txt24,txt25,txt26,txt27,txt28,txt29,txt30,txt31,txt32,txt33,txt34,txt35,txt36,txt37,txt38,txt39,txt40,txt41,txt42,txt43,txt44,txt45,txt46,txt47,txt48};//初始化ListView控件listView1.Items.Add("OPT算法",0);listView1.Items.Add("FIFO算法",1);listView1.Items.Add("LRU算法",2);listView1.Items.Add("Clock算法",3);listView1.Items.Add("LFU算法",4);}//得到进程页面的进入顺序,调用16个页面privatevoidbutton1_Click(objectsender,EventArgse){pageOrder=newArrayList();if(checkBox1.Checked)//固定输入被选中则进行输入形式获得集索引号{Stringw="";inti;try{for(i=0;i<16;i++){if(order[i].Text=="")//得到输入数字的个数{break;}inttemp=int.Parse(order[i].Text);if(temp<1||temp>9)//输入的数字不在1~9之间则抛出异常,等待重新输入thrownewException();pageOrder.Add(temp);w=w+pageOrder[i]+"";}txtpageorder.Text=w;pagecount=i;}catch{MessageBox.Show("输入格式错误,请输入1~9的数","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);}}else{//用获取随机数来得到16个索引号序列Randomrandom=newRandom();Strings="";for(inti=0;i<16;i++){pageOrder.Add(random.Next(1,9));s=s+pageOrder[i]+"";}txtpageorder.Text=s;for(inti=0;i<pageOrder.Count;i++)//将得到的索引号显示在相应的文本框中{order[i].Text=pageOrder[i].ToString();}pagecount=16;}for(inti=0;i<48;i++)//在重新获取索引号序列时,前面所显示的内容将清空,{text[i].Text="";}txtMissing.Text="";txtMissingRate.Text="";Diseffect=0;comboBox1.Text="";//清空ListView的内容listView1.Items.RemoveAt(4);listView1.Items.RemoveAt(3);listView1.Items.RemoveAt(2);listView1.Items.RemoveAt(1);listView1.Items.RemoveAt(0);listView1.Items.Add("OPT算法",0);listView1.Items.Add("FIFO算法",1);listView1.Items.Add("LRU算法",2);listView1.Items.Add("Clock算法",3);listView1.Items.Add("LFU算法",4);}privatevoidcomboBox1_SelectedIndexChanged(objectsender,EventArgse)//选择不同的算法{intindex=comboBox1.SelectedIndex;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 收纳师考试实例分享与分析试题及答案
- 2024年秘书证考试备考技巧分享试题及答案
- 关于珠宝鉴定师考试的试题及答案详解
- 2024年档案管理员工作经验分享试题及答案
- 2024年多媒体设计师考试信息来源试题及答案
- 多媒体制作中的团队沟通技巧试题及答案
- 2024年税务师考试技能提升试题及答案
- 2024年建造师考试预测试题及答案
- 档案信息准确性的保障试题及答案
- 2024年建筑行业新规试题及答案
- 2024届合肥高三二模化学试卷含答案
- 2024届湖北省武汉市高三第一次调研测试数学试卷含解析
- 缩短创伤患者急诊滞留时间医院护理品管圈成果汇报
- 大型文艺汇演活动物料明细表(模板)
- 肺癌的诊断课件
- 海洋科学导论试题库
- 跟着名著《小王子》学高考英语读后续写绝佳的续写清单-高中英语作文复习专项
- 部编版二年级下册语文第七单元大单元教案教学设计
- 施工升降机安全管理十条
- 2.7 辽西夏与北宋的并立 课件 2023-2024学年统编版七年级历史下册
- 人本集团招聘试卷
评论
0/150
提交评论