页面改进型clock置换算法clock算法,试着写了一下,但是有问题,求解

《页面置换算法的实验报告》 www.wenku1.com
页面置换算法的实验报告日期:
操作系统课程设计报告 院(系): 计算机工程学院 专业: 计算机科学与技术专业 学生姓名: __ ****** 班级:_*******___ 学号: ****** 题目: _页面置换算法 ____起迄日期: _************_设计地点: ************ 指 导 教 师: **** 一、 课程设计目的操作系统是计算机教学中最重要的环节之一,也是计算机专业学生的一门重要的专业课程。操作系统质量的好坏,直接影响整个计算机系统的性能和用户对计算机的使用。一个精心设计的操作系统能极大地扩充计算机系统的功能,充分发挥系统中各种设备的使用效率,提高系统工作的可靠性。由于操作系统涉及计算机系统中各种软硬件资源的管理,内容比较繁琐,具有很强的实践性。要学好这门课程,必须把理论与实践紧密结合,才能取得较好的学习效果。课程设计是学生学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。二、 课程设计内容模拟仿真请求分页调度算法OPT、FIFO、LRU、LFU、CLOCK等模拟页面调度算法,并提供性能比较分析功能。三、 系统分析与设计 1、系统分析由于分区式管理尽管实现方式较为简单,但存在着严重的碎片问题使得内存的利用率不高。再者,分区式管理时,由于各作业或进程对应于不同的分区以及在分区内各作业或进程连续存放,进程的大小或内存可用空间的限制。而且分区式管理也不利于程序段和数据段的共享。页式管理正是为了减少碎片以及为了只在内存存放那些反复执行或即将执行的程序段与数据部分,而把那些不经常执行的程序段和数据存放于外存待执行时调入,以提高内存利用率而提出来的页式管理有动态页式管理和静态页式管理之分,动态页式管理是在静态页式管理的基础上发展起来的。请求页式管理属于动态页式管理中的一种,它的地址变换过程与静态页式管理时的相同,也是通过页表查出相应的页面号,由页面号与页内相对地址相加而得到实际物理地址。有关的地址变换部分是由硬件自动完成的。当硬件变换机构发现所要求的页不在内存时,产生缺页中断信号,由中断处理程序做出相应的处理。中断处理程序是由软件实现的。除了在没有空闲页面时要按照置换算法选择出被淘汰页面之外,还要从外存读入所需要的虚页。这个过程要启动相应的外存和涉及到文件系统。因此,请求页式管理是一个十分复杂的过程,内存利用率的提高是以牺牲系统开销的代价换来的。这里用到了置换算法。它是在内存中没有空闲页面时被调用。目的是选出一个被淘汰的页面。如果内存中有足够的空闲页面存放所调入的页,则不必使用置换算法。把内存和外存统一管理的真正目的是把那些被访问概率非常高的页存放在内存中。因此,置换算法应该置换那些被访问概率低的页,将它们移出内存。 调页策略1)何时调入页面如果进程的许多页是存放在外存的一个连续区域中,则一次调入若干个相邻的页,会比一次调入一页的效率更高效一些。但如果调入的一批页面中的大多数都未被访问,则又是低效的。可采用一种以预测为基础的预调页策略,将那些预计在不久之后便会被访问的页面,预先调入内存。如果预测较准确,那么,这种策略显然是很有吸引力的。但目前预调页的成功率仅为50%。且这种策略主要用于进程的首次调入时,由程序员指出应该先调入哪些页。 2)请求调页策略当进程在运行中需要访问某部分程序和数据时,若发现其所在的页面不在内存,便即提出请求,由OS将其所需页面调入内存。由请示调页策略所确定调入的页,是一定会被访问的,再加之请求调页策略比较易于实现,故在目前的虚拟存储器中,大多采用此策略。但这种策略每次仅调入一页,故须花费较大的系统开销,增加了磁盘I/O的启用频率。 从何处调入页面在请求分页系统中的外存分为两部分:用于存放文件的文件区和用于存放对换页面的对换区。通常,由于对换区是采用连续分配方式,而事件是采用离散分配方式,故对换区的磁盘I/O速度比文件区的高。这样,每当发生缺页请求时,系统应从何处将缺页调入内存,可分成如下三种情况:(1)系统拥有足够的对换区空间,这时可以全部从对换区调入 所需页面,以提高调页速度。为此,在进程运行前,便须将与该进程有关的文件,从文件区拷贝到对换区。(2)系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入;而当换出这些页面时,由于它们未被修改而不必再将它们换出时,以后需要时,再从对换区调入。 (3)UNIX方式。2、系统设计:在进程运行过程中,若其所要访问的页面不在内存而需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区中。但应将哪 个页面调出,须根据一定的算法来确定。通常,把选择换出页面的算法称为页面置换算法(Page_Replacement Algorithms)。 一个好的页面置换算法,应具有较低的页面更换频率。从理论上讲,应将那些以后不再会访问的页面换出,或将那些在较长时间内不会再访问的页面调出。 则有以下页面置换方法:1) 、 先进先出(FIFO)页面置换算法: 这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单只需把一个进程已调入内存的页面,按先后次序存入一个时间数组,并将其中时间值最大的页面进行淘汰,并替换入新的页面就可以实现。2)、 最近最久未使用页面置换算法LRU(least recently used): 算法的基本思想:当需要淘汰某一页时,选择离当前时间最近的一段时间内最久没有使用过的页先淘汰。该算法的主要出发点是,如果某页被访问了,则它可能马上还被访问。或者反过来说,如果某页很长时间未被访问,则它在最近一段时间不会被访问。3)、最佳页面置换置换算法(OPT)其所选择的被淘汰页面,将是永不使用的,或者是在最长时间内不再被访问的页面。可保证获得最低的缺页率。但由于人们目前还无法预知一个进程在内存的若干个页面中,哪一个页面是未来最长时间内不再被访问的,因而该算法也是无法实现的。但是可利用该算法去评价其它算法。4)、简单Clock置换算法该算法是当某页被访问时,其访问位被设置为1,置换算法选择某一页淘汰时,只需检查页的访问位,如果是0,则将该页换出,如果为 1,则重新将它置0,暂不换出,而给该页第二次驻留内存的机会,再按照FIFO算法检查下一个页面。当检查到队列的最后一个页面时,若其访问位仍为1,则再返回到队首的第一个页面。 5)最少使用置换算法(LFU)该置换算法选择在最近一段时间内使用最少的页面作为淘汰页。LFU算法并不能真正的反映出页面的使用情况。3、模块设计: 系统功能结构图 4、数据结构说明:程序中用到了struct struct Pagetime{//字段//页面的序号//不同的算法有不同的含义//页面访问次数 //属性public int Num {get { } set { num = } }public int Timer {get { } set { timer = } }public int Count {get { } set { count = } }}程序中用到了字符串和数组//用于接收页面序列p//用于接收物理块数page = page_textBox.Tstrsize = size_textbox.T //声明struct数组,用于存储内存中页面的信息 Pagetime[] X = new Pagetime[20];5、算法流程图: 主流程图 FIFO置换算法的流程图 OPT页面置换算法 简单Clock置换算法 LRU页面置换算法
LFU页面置换算法四、模块调试与系统测试 1、模块调试? 输入的页面序列是数字串,输入的物理块数是数字,且设置其范围在10之内。 ? 输出的形式是字符串。? 页面置换算法是选择页面换出的算法,通过OPT(最佳置换算法)、FIFO(先进先出置换算法)、LRU(最近最久未使用置换算法)、简单Clock置换算法、LFU(最少使用置换算法)计算每种置换算法的访问次数、页面置换的次数、缺页中断的次数和缺页率,然后进行性能分析。2、系统测试? 测试方法:黒盒测试 3、调试分析:页面置换算法是用的可视化的形式,在刚开始编程时遇到的问题如何接收数据和显示数据,在接收页面序列的数据时我用的是字符串的形式,因为在C#中可以像数据一样访问字符串中的数据,例如有字符串S,访问第三个数据时可以这么访问S[2],在接收物理块数的数据时我刚开始用的int型,对textBox里的数据进行强制转换,但是在对输入数据进行限制时,出现了错误,所以后来我还是改用了字符串的形式进行接收,在对物理块数的限制,刚开始没有限制,后来发现数据过大的话得到的结果没有太大的意义,因为这次课程课程设计知识仿真模拟页面置换的过程,所以我将物理块数限制在10之内。在显示数据的地方,有试过很多方法,才开始想用ListView控件,但是有考虑到页面序列的长度不定,用ListView控件太死板,所以改用了Label控件,通过换行实现了比较好看的输出形式。在各个算法的显示时,才开始想用Button控件,但是又觉得界面不够好看,换成了tabControl控件,窗口效果比较好。再各算法的设计中,也遇到了一些困难,对于页面用了struct,而struct里timer,在不同的算法里面有不同的含义。 五、用户手册1、使用平台是Microsoft Visual Studio 2008,需要安装该软件,直接双击安装即可。 2、该程序无需安装。3、对于程序的使用,请按照如下步骤执行: (1)双击PageChange.exe,得到如下的界面 (2)输入页面序列,物理块数。输入的页面必须为数字,物理块数也必须为数字,且在10之内,否则会有相应的错误提示,具体的运行结果如下
(3)选择页面置换算法,按“置换结果”按钮,相应的结果如下 (4)在五种页面置换算法都得到结果时,才能进行分析,若如上只得到了两种置换结果时,按“性能分析”按钮,会有下面相应的结果显示 (5)在五种算法都得到置换结果时,按“性能分析”按钮,其结果如下 六、程序清单(1)OPT页面置换算法private void OPT_button1_Click(object sender, EventArgs e){//没有输入数据之前不能进行页面置换if (page.Length == 0 || strsize.Length == 0)MessageBox.Show(else{//初始化,设置第一个数据int i, j, u, losecount, changecount = 0; for (i = 0; i {X[i].Num = -1;X[i].Timer = 0;} X[0].Num = page[0];GetTime(0, 0);losecount = 1;OPT_label.Text = for (i = 1; i {u = 0;//若内存中存在该页面,进行如下计算for (j = 0; j {if (X[j].Num == page[i]){GetTime(i, j);u = 1;}}//若内存中没有足够的兑换空间且不存在该页面,进行如下置换 if (u != 1 && X[size - 1].Num != -1){j = GetMaxTime();X[j].Num = page[i];GetTime(i, j);losecount++;changecount++;}//若有空闲的空间,则进行如下置换if (u != 1 && X[size - 1].Num == -1){for (j = 0; j {if (X[j].Num == -1){X[j].Num = page[i];GetTime(i, j);losecount++;}}}//将数据进行输出for (j = 0; j {if (X[j].Num != -1)OPT_label.Text += (X[j].Num - 48).ToString();elseOPT_label.Text += }OPT_label.Text += } OPTlosepage = (float)losecount / (float)(page.Length);OPT_label.Text += } }(2)FIFO页面置换算法private void FIFO_button1_Click(object sender, EventArgs e){if (page.Length == 0 || strsize.Length == 0)MessageBox.Show( else{//初始化数据,并访问第一个页面int i, j, u, losecount, changecount = 0;for (i = 0; i {X[i].Num = -1;X[i].Timer = 0;}X[0].Num = page[0];X[0].Timer = 1; FIFO_label.Text = //循环,按照页面序列,选择淘汰的页面并进行置换for (i = 1; i { 置换 置换 u = 0;//进程的内存中是否存在要访问的页面的标记 //若内存中存在要访问的页面,则设置u=1,并退出循环 for (j = 0; j if (X[j].Num != -1)X[j].Timer++;}//输出数据for (j = 0; j {if (X[j].Num != -1)FIFO_label.Text += (X[j].Num - 48).ToString();elseFIFO_label.Text += }FIFO_label.Text +=
}FIFOlosepage = (float)losecount / (float)(page.Length);//缺页率FIFO_label.Text +=
}}(3)LRU置换算法private void LRU_button1_Click(object sender, EventArgs e){if (page.Length == 0 || strsize.Length == 0)MessageBox.Show(else{//初始化数据,并访问第一个页面,并输出访问结果int i, j, u, losecount, changecount = 0;for (i = 0; i {X[i].Num = -1;X[i].Timer = 0;}X[0].Num = page[0];X[0].Timer = 1;losecount = 1;LRU_label.Text = //循环,按照页面序列依次访问页面,并输出访问结果for (i = 1; i {u = 0;//如果内存中存在要访问的页面,则置Timer为0,u为1for (j = 0; j if (X[j].Num == page[i]){X[j].Timer = 0;//因为该算法是将最近最久为使用的页面作为淘汰页u = 1;}}//若内存中不存在空余的空间,且不存在要访问的页面,则进行如下置换 换 if (u != 1 && X[size - 1].Num != -1) { j = GetMaxTime(); X[j].Num = page[i]; X[j].Timer = 0; losecount++;//发生缺页中断 changecount++;//发生页面置换 } //若内存中,不存在要访问的页面,且有空闲的空间,则进行如下置if (u != 1 && X[size - 1].Num == -1) { for (j = 0; j {LRU_label.Text += } }LRU_label.Text += }LRUlosepage = (float)losecount / (float)(page.Length);LRU_label.Text+=
}}(4)简单Clock置换算法private void simpleClock_button1_Click(object sender, EventArgs e){if (page.Length == 0 || strsize.Length == 0)MessageBox.Show(else{//初始化,并访问第一个页面,输出访问结果int i, j, u, losecount, changecount = 0;for (i = 0; i {X[i].Num = -1;X[i].Timer = 0;}X[0].Num = page[0];X[0].Timer = 1;//此算法中Timer的含义是访问位,表示该页是否被访问 losecount = 1;simpleClock_label.Text = //循环,按照页面序列进行访问,并输出访问结果for (i = 1; i {u = 0;//如果内存中存在要访问的页面,则置访问位为1,u位1,并退出循环 for (j = 0; j {if (X[j].Num == page[i]){X[j].Timer = 1;u = 1;}//若内存中不存在要访问的页面,且内存中无空闲的空间,则进行如下置换if (u != 1 && X[size - 1].Num != -1){int tag = 0;for (j = 0; j { 如下空间 if (X[j].Timer == 1) { tag++; } else { X[j].Num = page[i]; X[j].Timer = 1; losecount++; changecount++; } } if (tag == size)//若内存中的页面访问位都为1,则进行如下操作 { for (j = 0; j X[j].Timer = 1;losecount++;}}}//输出数据for (j = 0; j {if (X[j].Num != -1)simpleClock_label.Text += (X[j].Num - 48).ToString(); else{simpleClock_label.Text += } }simpleClock_label.Text += }Clocklosepage = (float)losecount / (float)(page.Length);simpleClock_label.Text+= }}(5)LFU页面置换算法private void LFU_button1_Click(object sender, EventArgs e){if (page.Length == 0 || strsize.Length == 0)MessageBox.Show(else{//初始化,并访问第一个页面,输出访问结果int i, j, u, losecount, changecount = 0;for (i = 0; i {X[i].Num = -1;X[i].Timer = 0;X[i].Count = 0;}X[0].Num = page[0];X[0].Timer = 1;X[0].Count = 1;//访问次数LFU_label.Text = //循环,按照页面序列进行置换并输出结果for (i = 1; i {u = 0;//若内存中存在要访问的页面,则访问次数加1,置u为1,并退出循环 for (j = 0; j {if (X[j].Num == page[i]){X[j].Count++; 置换 置换 u = 1; } } //若内存中不存在要访问的页面,且不存在空闲的空间,则进行如下if (u != 1 && X[size - 1].Num != -1) { j = GetMinCount();//选择访问次数最少的页面作为淘汰页 X[j].Count = 1; X[j].Num = page[i]; X[j].Timer = 0; changecount++; losecount++; } //若内存中不存在要访问的页面,且存在空闲的空间,则进行如下的if (u != 1 && X[size - 1].Num == -1) { for (j = 0; j //输出数据for (j = 0; j {if (X[j].Num != -1)LFU_label.Text += (X[j].Num - 48).ToString();elseLFU_label.Text += }LFU_label.Text += }LFUlosepage = (float)losecount / (float)(page.Length);LFU_label.Text+=
}} 七、体会与自我评价这次操作系统课程设计,让我对操作系统有了更深的认识,首先操作系统是一管理电脑硬件与软件资源的程序,同时也是计算机系统内核与基石。操作系统是一个庞大的管理控制程序,大致包括5个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理。我这次课程设计的题目是页面置换算法,是属于存储器管理。在进程运行过程中,若其访问的页面不在内存而需把它们调入内存,但内存以无空闲空间时,为了保证该进程能正常的运行,系统必须从内存中调出一页程序或数据送磁盘的兑换区中,但应将哪个页面调出,需根据一定的算法来确定。通常,把选择换成页面的算法称为页面置换算法。通过本次课程设计,我对页面置换算法的了解更加的深刻。主要有以下置换算法: OPT(最佳置换算法)、FIFO(先进先出置换算法)、LRU(最近最久未使用算法)、简单 Clock置换算法、LFU(最少使用置换算法)。每种算法都有各自的优缺点,OPT算法是实际中不能实现的,但是可以利用该算法去评价其它算法;FIFO算法与进程实际运行的规律不相适用,因为在进程中,有些页面经常被访问;LRU算法是根据页面调入内存后的使用情况进行决策的;Clock算法是LRU的近似算法,但它不要求太多的硬件支持;LFU算法并不能真正的反应页面的使用情况。在这次课程设计中,遇到了一些困难,例如怎么实现可视化,如何接收数据,显示数据,及对数据的限制操作等,在遇到这些困难的时候,我会去查阅资料,仔细看书,尝试用不同的方法解决,在各种方法中选择一种最好的方法,有的时候会碰到不会用的控件或函数,我会查看MSDN,这次是用的C#语言做的,每一步都是自己独立完成的,这次课程设计我最大的收获是学以致用,因为最近一直在学C#,可能学得东西还不够多,但是通过这次设计我看到了自己学习的能力,我相信在以后的学习中,我会更加的努力。最后,还非常感谢辛苦的老师们,首先的操作系统老师,因为她辛苦的为我们讲解操作系统这门课,让我们对操作系统有了一定的了解,为这次课程设计奠定了良好的基础,其次,感谢课程设计指导老师,因为课程设计是一个总体运用能力的体现,指导老师起到的是重要的指引的作用。 八、参考文献[1]计算机操作系统 汤小丹,梁红兵,哲凤屏 西安电子科技大学出版社 2007.5[2] C#开发实战宝典 赛奎春,刘志铭,宋坤 清华大学出版社 2010.1[3]visual C# 高级编程范例 谭桂华等 清华大学出版社 2004.5[4] 操作系统教程与实验 胡明庆,高巍,钟梅 清华大学出版社 2007.1[5] C#高级编程 李铭 清华大学出版社 2009.2本文由(www.wenku1.com)首发,转载请保留网址和出处!
免费下载文档:下载费用:20 元 &
页面置换算法演示教辅工具 毕业设计(论文)题目页面置换算法演示教辅系统学院软件学院专业名称软件工程班级学号学生姓名指导教师二O一五年六月摘要操作系统是计算机里面重要的系统软件之一,而页面置换算法是操作系统里面一个比较重要的知识点,所以学好这一章的内容必然重要,由于无法实际的将内容展示出来,导致学习者在学习方面存在着一定的困难,基于目前没有针对于页面置换算法的完善的演示工具,故将此次的毕业设计内容着眼于该演示工具的开发。本文主要描述页面置换算法教辅演示系统,首先介绍了系统的设计目标,开发环境,实施方案和关键技术。其次介绍了系统的详细设计过程页面置换算法的算法设计,各算法模块的设计,界面设计。最后对系统的优缺点,以及自己的期望做了一个简单的总结。本系统是使用了强大的SKIN控件美化皮肤,使用MFC搭建界面,算法使用C编写,具有设计灵活,操作简单,运行效率高等特点。关键词MFC操作系统ABSTRACTOPERATINGSYSTEMISONEOFTHEIMPORTANTSYSTEMSOFTWARESINTHECOMPUTER,ANDPAGEREPLACEMENTALGORITHMISQUITEANSIGNIFICANTPOINTINOPERATINGSYSTEMTHEREFORE,IT’SVERYIMPORTANTTOLEARNTHISCHAPTERWELLFORTHEREASONTHATTHECONTENTSCANNOTBESHOWEDUPINDETAIL,LEARNERSMAYHAVESOMETROUBLESINLEARNINGFORLACKINGPERFECTPRESENTATIONTOOLSINPAGEREPLACEMENTALGORITHMATPRESENT,THEGRADUATIONDESIGNTHISTIMEWILLFOCUSONTHEDEVELOPMENTOFTHEPRESENTATIONTOOLSTHEARTICLECONCENTRATESONPAGEREPLACEMENTALGORITHMTEACHINGPRESENTATIONSYSTEMFIRSTLY,ITINTRODUCESTHESYSTEMDESIGNGOALS,DEVELOPMENTENVIRONMENT,IMPLEMENTATIONPLANSANDKEYTECHNIQUESINTHESYSTEMSECONDLY,ITGIVESUSADETAILDESIGNPROCESSOFTHESYSTEMINCLUDINGTHEALGORITHMDESIGNOFPAGEREPLACEMENTALGORITHM,EACHDESIGNOFALGORITHMMODULESANDINTERFACEDESIGNFINALLY,WEMADEASUMMARYONTHEBENEFITS,DRAWBACKSOFTHESYSTEMANDOUREXPECTATIONSTHESYSTEMISPOWERFULINSKINBEAUTIFICATION,ITSINTERFACEISSETUPBYMFCANDITSALGORITHMISWRITTENBYCTHESYSTEMHASTHEFEATURESOFFLEXIBLEDESIGN,EASYOPERATIONANDHIGHEFFICIENCYKEYWORDSMFCOPERATINGSYSTEM目录1引言111国内外研究概况及发展趋势112课题意义113课题目标214设计内容与设计结果2141设计内容21411LFU模块21412FIFO模块21413OPT模块31414NRU模块3142设计结果32总体设计与实施方案421总体设计4211系统需求分析5212系统实现的目标522实施方案5221设计环境需求与关键技术5222方案实施步骤63系统设计与实现731系统业务流程732系统结构设计7321程序结构7322数据结构7323程序流程图733系统具体设计和实现11331FIFO算法实现模块11332OPT算法模块13333LRU法模块15334CLOCK算法模块16335错误信息提示模块18336主界面模块20337特色功能模块204程序的调试及故障分析245计评价和改进要求及目标2551设计评价2552改进的要求及目标266总结27参考文献28致谢291引言11国内外研究概况及发展趋势当前计算机的硬件技术发展迅速,但是内存的成本却随之迅速下降,容量也随之增大,尽管如此但是还是不能够根本的来满足软件对内存日益增长的需求,所以对存储空间进行充分的利用是现在操作系统的当务之急。1961年英国曼彻斯特大学推出了“虚拟内存”的概念,并且实现了这一技术,目前大多数计算机都采用此技术,比如IBM370系列。正是由于这种成熟的技术,所以推动了计算机的发展,同时在一些微型计算机的存储管理技术上也使用这种技术。正是由于这种特性,所以使得计算机操作系统显得尤为的重要。基于一个这样的情况页面置换算法演示的这个系统有着很大的推动力以及它自己的优势,相信在未来的市场厂有着不可估量的潜力。12课题意义现在是21世纪,计算机发展特别迅速,由此改变了人们的生活方式,在精神方面人们也受着它们的影响,很多人也因此进行各种的学习来满足自己精神方面的追求。操作系统是计算里面一个特别重要的一章,也是软件专业学生里面必须学习的一个十分重要的课程。操作系统的好坏决定着计算机的性能以及用户对其体验的好坏,我们可以通过提高各种设备资源的和设备的使用效率来提高系统的可利用性。操作系统十分的复杂以及繁琐,所以如果要很好的掌握这门学科,就得将实践与理论相结合,这样才能达到事半功倍的效果。而且为了使同学更好的理解操作系统中页面置换算算法的原理,知道它是怎么实现,有必要开发一个页面置换算法演示教辅系统,帮助老师教学,帮助学生理解。13课题目标页面置换算法演示教辅系统要达到以下的目标1、可以选择需要演示的页面置换算法。2、可以进行自动演示。3、可以进行手动演示。4、操作人员可以自动输入想要演示的页面号。5、系统软件可以随机产生演示所需的页面号。6、操作人员输入错误数据或者非法字符,系统软件会给出提醒。7、演示完成后,系统软件自动的会算出缺页次数,缺页率,置换次数,置换率。14设计内容与设计结果141设计内容页面置换算法演示教辅系统主要有LFU,FIFO,OPT,NRU四大算法演示功能模块。1411LFU模块LFU模块主要分为分步演示,直接演示,自动输入页面号,手动输入页面号,演示提示功能。直接演示点击这个功能,操作可以看到演示完成后的一个结果。分步演示点击这个功能,演示人员可以分步进行操作,能够清楚看到页面置换的每一个步骤,方便讲解。自动输入页面号系统软件自动生成演示的页面号。手动输入页面号演示人员可以输入自己想要演示的页面号。演示提示当用户输入错误数据时,系统软件会给予错误提示。1412FIFO模块FIFO模块主要分为直接演示,分步演示,自动输入页面号,手动输入页面号,演示提示功能。直接演示点击这个功能,操作可以看到演示完成后的一个结果。分步演示点击这个功能,演示人员可以分步进行操作,能够清楚看到页面置换的每一个步骤,方便讲解。自动输入页面号系统软件自动生成演示的页面号。手动输入页面号演示人员可以输入自己想要演示的页面号。演示提示当用户输入错误数据时,系统软件会给予错误提示。1413OPT模块OPT模块主要分为直接演示,分步演示,自动输入页面号,手动输入页面号,演示提示功能。直接演示点击这个功能,操作可以看到演示完成后的一个结果。分步演示点击这个功能,演示人员可以分步进行操作,能够清楚看到页面置换的每一个步骤,方便讲解。自动输入页面号系统软件自动生成演示的页面号。手动输入页面号演示人员可以输入自己想要演示的页面号。演示提示当用户输入错误数据时,系统软件会给予错误提示。1414NRU模块NRU模块主要分为直接演示,分步演示,自动输入页面号,手动输入页面号,演示提示功能。直接演示点击这个功能,操作可以看到演示完成后的一个结果。分步演示点击这个功能,演示人员可以分步进行操作,能够清楚看到页面置换的每一个步骤,方便讲解。自动输入页面号系统软件自动生成演示的页面号。手动输入页面号演示人员可以输入自己想要演示的页面号。演示提示当用户输入错误数据时,系统软件会给予错误提示。142设计结果操作人员可以直接操作此款软件进行一个辅助性的教学演示。1、进入系统菜单主界面后,需要自己确定页面总数和物理快数。2、确定是手动输入所需演示的页面号还是让系统软件自动生成页面号。3、选择演示功能类型,可以选择分步演示,也可以选择直接演示。4、确定演示的算法。5、演示完成后可以看到置换次数,置换率,缺页次数,缺页率等数据。2总体设计与实施方案21总体设计211系统需求分析随着现在计算机的飞速发展,人们对计算机的了解也越来越多。而操作系统是计算机里面一个非常重要的学科,页面置换算法是里面一个很重要的知识点。书面文字的讲解过于书面化,学生理解起来会非常的困难,而且会比较的枯燥。基于这样一个问题,本课题拟于开发适合教师教学,能够帮助学生更好的学习计算机操作系统里面的页面置换算法这一章的内容。功能需求首先有四个算法的演示的选择,每个算法必须有分步演示和直接演示两种。分步演示是一步一步的进行页面的置换,直接演示是置换之后的所有结果。然后要有手动输入页面号和系统自动产生页面号,这样可以避免系统产生的随机性。最后算法演示完成后,系统软件会计算出缺页率,缺页次数,置换率,置换次数。性能需求点击功能系统软件会迅速的做出反应,系统具有提示性的信息。可以给演示人员提供一些帮助性的建议。运行要求有提示框对每一步的步骤进行提示。用户界面有菜单栏,软件名称。其他要求界面比较简洁大方,界面比较统一,操作比较简单,可维护性比较好,系统比较安全。212系统实现的目标页面置换算法演示教辅系统具有四个模块包括FIFO模块,OPT模块,NRU模块,LFU模块。系统结构图如图21所示。页面置换演示教辅系统FIFO算法OPT算法LFU算法NRU算法分步演示直接演示分步演示直接演示分步演示直接演示分步演示直接演示22实施方案221设计环境需求与关键技术想要开发一个好的系统软件就得需要一个好的开发环境和平台,所以我们选择了VS2005作为编译环境。硬件环境酷睿I3/2G操作系统WIN7软件编译环境VISUALSTUDIO2005VISUALSTUDIO微软推出的比较完善的开发工具,能给多种开发语言生成开发环境,如VISUALBASIC,VISUALC,VISUALC,VISUALF。使用VISUALSTUDIO可以利用它里面的类库,比如搭界面的MFC,可以直接拖入控件搭建自己想要的界面,无需用代码生成,简单而且高效,省去了程序员的许多麻烦,节省下来的时间可以用来完善系统的功能和提高系统的运行效率,大大提高了软件的质量。MFC介绍,是微软提供的库类库,形式的C类封装了WINDOWSAPI,并包含一个应用程序框架,为了减少工作负载应用程序开发人员。句柄类包含大量的WINDOWS包含包装类和许多内置控件和组件包装类。MFC将核心代码封装好了,你只需调用将就可以了,你只需考虑自己的逻辑,无需考虑一些每次编程需要用的重复的作用。SKIN介绍,系统软件开发,是一种非常特别的软件界面开发技术。使得原本复杂的界面编程变得非常的容易,随着换肤的技术不断的发展,SKIN不仅是一种换肤控件,而且是功能比较强大的换肤插件。你只需在你的程序中添加几句简单的代码就可以让你的界面变得漂亮,而且SKIN库提供各种不同风格的主题,供你选择。SKIN实现原理它属于第二代的外挂式的界面库,主要采用了HOOK与子类化技术来实现应用程序的自动更换皮肤。222方案实施步骤页面置换算法演示教辅系统的开发经过调研、需求分析、系统设计、编码实现、系统调试等阶段。1、调研,主要是了解市场上对页面置换算法的需求。2、需求分析,确定系统的业务逻辑,分析软件的所需功能。3、系统设计,具体的设计系统功能,设计页面完成整体设计。4、编码实现,编写代码实现设计功能。5、系统调试,调试代码查看是否BUG的地方,使功能更加完美。3系统设计与实现31系统业务流程系统操作流程如下1、进入系统,开始选择所需演示的物理块和页面总数。2、选择1完成后,选择需要执行的方式,是分步演示还是直接演示,两种演示结果不一样,一个是显现每一步的步骤,一个是直接出结果。3、提示帮助,如果演示人员输入错误的数据,系统软件会自己报错,提示操作人员发生错误。32系统结构设计321程序结构当进程要访问某个页面时,首先判断页面是否已经满了,如果没满页面进入直接加入物理块中,如果满了则进行相应的算法进行置换。322数据结构_MEMORY物理快_TOTAL页面数MYT总页面序列MYM物理块号MYB各个物理块对应的时间权或距离权323程序流程图1、FIFO先进先出算法这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。FIFO算法流程图如图31所示。算法开始检查MYTGETATI的内容是否已存于MYM中求出最先调入内存的页面AIMM_MEMORY将其替换MYMSETATA,MYTGETATI否AS输出数组MYM输出缺页次数和置换次数计算缺页率和置换率并输出算法结束是图31FIFO算法流程图2、LFU最近最久未使用算法是根据页面调入内存后的使用情况进行决策的。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法是选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间T,当须淘汰一个页面时,选择现有页面中其T值最大的,即最近最久未使用的页面予以淘汰。LFU算法流程图如图32所示。算法开始检查MYTGETATI的内容是否已存于M中找出MYB值最大的序号,存入J否MYMGETATIAASMYBSETATJ0除J号外的MYB1输出数组M输出缺页次数计算缺页率并输出算法结束记录A在内存中的位置JMYBSETATJ0图32LFU算法流程图3、OPT最佳置换算法其所选择的被淘汰页面,将是以后永不使用的或许是在最长未来时间内不再被访问的页面。采用最佳置换算法,通常可保证获得最低的缺页率。但由于人目前还无法预知一个进程在内存的若干个页面中,哪一个页面是未来最长时间内不再被访问的,因而该算法是无法实现的,便可以利用此算法来评价其它算法。OPT算法流程图如图33所示。是算法开始检查MYTGETATI的内容是否已存于M中物理页没填满直接填入即AIM否向后对比,存储当前页面与往后页面之间的距离MYMSETATK,H重新设置物理页面的距离权MYBSETATK,9999输出数据计算缺页率并输出算法结束记录页面不需要置换XFALSE,同时M找到距离权最大的页面将其替换掉DMYBGETATH图33OPT算法流程图4、CLOCK时钟算法又名NRU算法。简单的CLOCK算法,只需为每页设置一位访问位,再将内存中的所有页面都通过链接指针链接成一个循环队列。当某页被访问时,其访问位置1,否则置为0,当要进行页面置换的时候,只需判断访问位是否为0,是的话将页面置换出来,不是的话重新将其置为0,然后继续访问。CLOCK算法流程图如图34所示。是算法开始检查MYTGETATI的内容是否已存于M中物理页没填满直接填入即AIM否MYMGETATIAASMYBSETATJ0除J号外的MYB1输出数组M输出缺页次数计算缺页率并输出算法结束记录A在内存中的位置JMYBSETATJ0图34CLOCK算法流程图33系统具体设计和实现331FIFO模块手动输入或者自动生成序列,算法运行后的结果如图35所示。演示人员可以自己选择物理块,页面总数。是图35FIFO算法主要实现代码FORINTK0K0Y{IFMYMGETATJMYTGETATY{Q//MYBSETATJ,Q}}IFAQAQ}}ASMYMSETATA,MYTGETATI}335错误信息提示模块当操作人员输入错误的数据时,系统软件会弹出对话框给予提示,警告信息数据错误。1、当用户输入小数以及负数时,系统软件会提醒用户输入整数。如图39所示。图39错误12、当页面总数或者页面号为0时,软件会给出提示,页面不能小于物理块。如图310所示。图310错误23、当操作人员输入的数据为符号之类的非法数字时,软件会弹出对话框给出警告,输入序列有非法字符。如图311所示。图311错误3336主界面模块主界面包括四个算法选择供演示人员选择,演示人员可以选择直接演示也可以选择分步演示,此外系统还提供分步文字提示功能,能够用文字提示你进行到哪一步,哪一个页面需要替换。如图312所示。图312主界面337特色功能模块页面置换算法教辅系统特色功能模块当进程读取到页面号是会有颜色标记页面号,提示操作人员当前页面号正在读取。还有提示框会提示页面号的置换情况以及置换结束后出现的置换率,置换次数,缺页率,缺页次数。1、执行分步演示功能,软件会用颜色标记的方法提示操作人员此时读取到的页面号。如图313所示。图3132、在算法演示的过程中,软件会提示操作人员此时页面是否命中,是否加入页面。如图314所示。图3143、在算法演示完成之后,软件会自动算出页面置换算法的置换次数,置换率,缺页率,缺页次数等数据。如图315所示。图315主要实现代码CHARFORMATCFZEROMEMORYCFCBSIZESIZEOFCHARFORMATCFDWMASKCFM_BOLD|CFM_COLOR|CFM_FACE|CFM_ITALIC|CFM_SIZE|CFM_UNDERLINECFBCHARSETANSI_CHARSETCFDWEFFECTS0CFYHEIGHT2020//文字高度STRCPYCFSZFACENAME,“宋体“//设置字体CFCRTEXTCOLORRGB200,100,255//文字颜色IFMYTEXT““{IFMYTGETATI10{M_RICHEDIT2SETSELX,Y1M_RICHEDIT2SETSELECTIONCHARFORMATCFXX3YY3}ELSE{M_RICHEDIT2SETSELX,YM_RICHEDIT2SETSELECTIONCHARFORMATCFXX2YY2}}ELSE{IFMYTGETATI10{M_RICHEDITSETSELX,Y1M_RICHEDITSETSELECTIONCHARFORMATCFXX3YY3}ELSE{M_RICHEDITSETSELX,YM_RICHEDITSETSELECTIONCHARFORMATCFXX2YY2}}4程序的调试及故障分析程序的调试与测试是开发周期不可或缺的一个环节。软件开发不可能取得一次性成功的,必须经历开发测试完善在测试这些阶段。可以用一个文本来记录你测试的结果,再根据你的测试结果来对软件进行修改。本系统经过测试遇到如下几个问题1、当点击分步演示时,只能执行这个功能,无法触发其他功能。因为使用了模态对话框来达到分步演示的效果,所以目前无法解决这个问题。2、物理块数目为0时,程序崩溃。解决办法设置提示信息,当物理块数目为0时,进行错误提示,这样操作人员就知道数据具有错误信息,程序不会发生崩溃。5计评价和改进要求及目标51设计评价本系统达到刚开始最初的设计初衷1、简单的界面,使用方便。2、能够帮助老师进行教学演示,方便学生理解,提高教学质量。3、安装起来方便,对硬件环境要求比较低。4、运行效率高,简单易懂。5、具有各种信息提示,便于演示人员理解操作。6、具有特色功能,可以吸引学习人员。52改进的要求及目标虽然基本功能达到了但是这个系统还是有很多欠缺的地方,比如可以做一个教学性的反馈模型,软件可以自动演示。当缺页率,置换率不在一个正常的范围值内时,软件自动减少物理块数,从而使它达到一个标准值,这样可以给演示人员示范一个比较好的范围。在提示页面动态这块,本软件采用的是让字体标记颜色并且增大它的大小,通过这样提示演示人员目前页面的状态,这个完全可以进一步的优化,可以使数字进行闪动,这样达到的效果更加直观。由于技术问题,自己还无法实现,希望有关公司或者人士能够解决一问题。界面方面自己使用的是SKIN皮肤库,做的比较简单,还需要做进一步的改进。演示算法的物理块数有限制,由于界面排版的问题,目前只能演示20个物理块,而且在最大化,最小化这块也有问题,这个自己没有处理好,得花时间去将它改进好,否则无法成为一个好的算法演示系统。自己的目标是希望能够开发出一个真正可以帮助老师的算法演示系统,能够演示所有页面置换算法,在此基础上能够有一个标准的反馈模型,可以给老师做一个简单的示范,不过由于时间和技术上的问题自己没能做的更加的全面,不过以后有时间的话,自己还是希望能够完成这个系统的开发,将这个系统做的完美,能够真正意义上在各大高校推广起来使用。经历了此次开发自己也是确切的感受到文件系统对一个操作系统的重要性,其作用领域几乎涵盖了操作系统的所有文件,所有属性等,对各种文件操作都是基于文件系统来完成的。由此可见文件系统在目前任何操作系统上的意义个重要性。今后自己会多花时间去了解操作系统,来弥补现在自己在开发系统上知识点的不足。6总结通过这次对页面置换算法演示教辅系统的开发,深深感觉到自身所学知识的有限。有些题目书本上没有提及,所以就没有去研究过,做的时候突然间觉得自己真的有点无知,虽然现在去看依然可以解决问题,但还是浪费了许多,这一点是必须在以后的学习中加以改进的地方,同时也要督促自己在学习的过程中不断的完善自我。不过自己也因此得到了许多的锻炼,锻炼了自己的逻辑思考能力,加强了自己对计算机基础知识点的巩固。在软件开发中的需求,设计,测试自己都是严格来执行的,尽可能的减少BUG,预期的结果也和自己当初的设计目的差不多,不过由于自己在软件开发方面的欠缺,导致整个软件还是存在一些不足的地方,可以进行完善。通过本次开发,我有下面几点体会1、开发应该将实践与理论相结合,缺一不可。2、查资料,多问老师,多去论坛逛逛,只有这样你才能不断的进步,弥补自己的不足,及时的做好自己的工作。3、充分利用资源。图书馆有许多关于开发资料,自己可以多去学习学习。参考文献1张尧学计算机操作系统教程M北京清华大学出版社,20062汤子瀛计算机操作系统M西安西安电子科技出,19963陈向群操作系统教程M北京北京大学出版社,20074罗宇操作系统课程设计M北京机械工业出版社,20055STANLEYBLIPPMANBARBARAECPRIMERM北京人民邮电出版社,20066郑振杰C程序设计M北京人民邮电出版社,20057柴欣C/C程序设计M保定河北大学出版社,20028余苏宁,王明福C程序设计M北京高等教育出版社,20039张剑,余胜生再探讨虚拟存储中的置换算法J合肥吉林化工学院学报,2910张剑,肖正文“虚拟存储”管理技术中的淘汰算法J合肥安徽教育学院学报,27致谢大学生活就要结束了,自己又要面临新的开始了,我衷心的感谢我的毕设导师谢谢他们的帮助和鼓励。正因为老师的帮助,我才能不断的提高自己的能力。从毕设题目的设定,开发以及功能的检查,王老师都给了我悉心的指导,在此再一次感谢老师给与的帮助和关心。其次要感谢所有检查组的老师,谢谢他们给与的宝贵意见。同时也感谢同学平时给与的关心和帮助。最后一次感谢所有在毕设帮助过我的人,我庆幸老天让我遇到你们。祝昌航越来越好
下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。2.下载的文档,不会出现我们的网址水印。
文档加载中……请稍候!
下载文档到电脑,查找使用更方便
20 元 &&0人已下载
还剩页未读,继续阅读
<a href="UserManage/CopyrightAppeal.aspx?bid=9757554" title="版权申诉" class="fLeft works-manage-item works-manage-report" target="_blank"
关&键&词: 页面 置换 算法 演示 教辅 工具
& 人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
本文标题:页面置换算法演示教辅工具 链接地址:
当前资源信息
类型: 共享资源
格式: DOC
大小: 760.00KB
上传时间:

我要回帖

更多关于 clock页面置换算法 的文章

 

随机推荐