项目4—页面置换算法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
项目4—页面置换算法

IV 页面置换算法 1 项目概述 2 全局页面置换算法 3 局部页面置换算法 4 产生引用串 5 性能评价 6 具体任务总结 5 附加任务的建议 1 项目概述 在本项目中,我们将实现不同的全局和局部页面置换算法,并利用随机产生的引用串一比较它们的相对性能。 2 全局页面置换算法 全局页面置换算法采用固定数目的页框。我们考虑一个单进程系统并做如下假设: 进程的虚拟内存由P个页面组成,编号从0~P-1。 引用串RS是范围从0~P-1的的连续的整数。RS的每一个元素p表示对页面p的一次引用。 内存由F个页框组成,编号从0~F-1。使用数组M[F]表示。数组的每一项M[f]包含当前驻留在页框f中的页面的页面号。 原理教材中讨论了几种不同的全局页面置换算法。每一个算法顺序读取RS的元素。对于RS中的每一个元素p,置换算法会搜索内存数组以便找到匹配的项,也就是要找到 一个f满足M[f]==p。如果没有找到匹配项,便会发生缺页。算法必须根据其实施的策略选择一个页框M[i],并用p置换该页框的内容,即M[i]=p。 为了实现置换算法,必须根据不同的算法而提供辅助的数据结构。以下列表总结了不同算法的需求: 最佳置换算法和随机置换算法不需要辅助的数据结构。在最佳置换算法中,算法搜索RS来寻找要置换的页。随机置换算法为了选择要置换的页,必须在0~F-1之间产生一个随机数。 FIFO置换算法只需要在内存中维持一个指向最旧的页面的指针(数组索引)。只要当前页面被置换了,该指针就递增1(以F为模)。 LRU置换算法需要维护一个大小为F、用来实现队列的辅助数组;在每次引用时该队列都会重新排序,以便把被引用的页面放在队列的末尾。 第二次机会置换算法(即时钟置换算法)必须维护一个和FIFO算法相似的指针。此外,它需要一个a位的数组,每位表示一个页框。 第三次机会置换算法必须维护一个指针和3个数组;这些数组分别表示u位、w位和marker位。 一旦开发出这些算法,就可以使用第4 节中叙述和各种引用串进行测试了。 3 局部页面置换算法 在局部页面置换算法中,页框的数目不是固定的。相反,我们必须记录进程的当前工作集。对于一个进程,我们用数??VM[P]表示其虚拟内存,其中P是虚拟内存中的页面的数目。依照不同的算法,需要记录如下信息作为VM的每个元素的一部分: 对于工作集WS算法来说,每个元素VM[p]只记录了页面p当前是否驻留在虚存中,即是否是工作集中的一员。为了记录当前滑窗口,我们实现了另外一个数组WIN[T+1],其中T是一个系统常量。该数组起到一个有固定长度的队列的作用:任何时候,它都包含了最后T+1步期间的页面引用。WS算法将按照如下方法使用这两个数组。对于在RS中的每个引用p,它会在队列WIN的最前面插入p,同时移除当前在队尾的元素q。然后,再搜索队列WIN以便查找出现的q,如果没有,相应的数组项VM[q]设为0,表明它没有驻留。然后,检索数组项VM[p],如果它不为1,算法设置其为1 并记录产生了一次缺页。 对于最佳页面置换算法VMIN来说,使用同样的数组VM和MIN。VM还是记录页面是否驻留在虚存中;WIN对应向前查找窗口,也就是说,它总是包含下次要引用的T+1页。每一次引用时,在未来的T步要被引用的页面将会代替当前在WIN中被引用的页面P。如果在引用页面时该页面没有在虚存中(VM[p]==0),VM[p]置1,并记录产生了一次缺页。此外,没有出现在WIN中的所有当前驻留页面在VM中都被标记为没有驻留。 对于缺页频率置换算法PFF,我们对数组VM进行扩充,使其每一项都是由两个字段组成的一个结构。其中一个字段VM[p].res记录了当前页面是否驻留,另外一个字段VM[p].u对应于页框的使用位。PFF置换算法按照下面的方法使用这两个字段。在每次引用页面p时VM[p].u置为1。在缺页时,被引用页面p的VM[p].res被为1(使其作为驻留集中的一员)。然后,如果当前缺页和最后的缺页(置换算法必须对其记录)之间的时间大于常量T,那么系统就会找到所有VM[q].res= =1和VM[q].u= =0的页面q。这些页面自从最后缺页以来从来没有被引用过,并把它们从驻留集中移出(VM[q].res置为0)。最后,所有页面的VM[*].u都设为0。不管页面是否已经被移除,这是在每次缺页结束时都要做的。 可以将3种算法相互比较,也可以与第5节介绍的全局页面置换算法相比较。 4 产生引用串 前面提到,引用串是从0~P-1连续的整数,其中P是组成进程的虚拟内存的页面总数。可以使用随机数产生器来产生具有不同属性的引用串。引用串的主要属性是其局部性性程序,我们可以用几种不同的方法来控制它。 最简单的引用串可能是没有局部性的那一种。它是在0~P-1之间均

文档评论(0)

ktj823 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档