- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验五 存储分配
实验五 存储分配 [实验目的] 通过对页面、页表、地址转换和页面转换过程的模拟,加深对请求调页系统的原理和实现过程的理解。 [实验内容和步骤] 假设每个页面中可存放10条指令,分配给一个作业的内存块数为4 用C语言模拟一作业的执行过程。该作业共有320条指令,即它的地址空间为32页,目前它的所有页都还未调入内存。在模拟过程中,如果访问的指令已在内存,则显示其物理地址,并转下一条指令。如果所访问的指令还未装入内存,则发生缺页,此时需记录缺页的次数,并将相应页调入内存。如果4个内存块中均已装入该作业,则需进行页面转换。最后显示其物理地址,并转下一条指令。在所有320条指令执行完毕后,请计算并显示作业运行过程中发生的缺页率。 置换算法:请分别考虑OPT、FIFO和LRU算法。 作业中指令的访问次序按下述原则生成: 50%的指令是顺序执行的 25%的指令是均匀分布在前地址部分 25%的指令是均匀分布在后地址部分 具体的实施办法: ①在[0,319]之间随机选取一条起始指令,其序号为m ②顺序执行下一条指令,即序号为m+1的指令 ③通过随机数,跳转到前地址部分[0,m-1]中的某条指令处,其序号为m1; ④顺序执行下一条指令,即序号为m1+1的指令 ⑤通过随机数,跳转到后地址部分[m1+2,319]中的某条指令处,其序号为m2; ⑥顺序执行下一条指令,即序号为m2+1的指令 ⑦重复跳转到前地址部分、顺序执行、跳转到后地址部分、顺序执行的过程,直至执行320条指令。 [问题讨论] 1.如果增加分配给作业的内存块数,将会对作业运行过程中的缺页率产生什么影响? 2.为什么一般情况下,LRU具有比FIFO更好的性能? 关键知识 在进程运行过程中,若其所要访问的页面不在内存需把它们调入内存,但内存已 无空闲 空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区中。但应将哪个页面调出,所以需要根据一定的算法来确定。在这一过程中,选择换出页面的算法称为页面置换算法。一个好的页面置换算法,应具有较低的页面更换频率。页面置换算法的好坏,将直接影响到系统的性能。以下分别是实验要求的三个页面置换算法的介绍及设计思想。 ⑴最佳置换算法(Optimal): 最佳置换算法是Blady在理论上提出的一种算法。其所选择的被淘汰页是将来不再被使用,或者是在最远的将来才被访问的页面。 采用这种页面置换算法, 保证有最少的缺页率。但由于目前还无法预知一个进程在内存的若干个页面中,哪个在最长的时间内不会被访问,因而,现实中该算法是无法实现的。 因此在该算法的模拟过程中,页面访问次序必须是给定的,具体实现为:对每一个物理块设置一个整数型的访问标志位,当需要置换物理块中的某一页时,将每一个物理块中的页面号与当前需调入页以后的每一页面号进行比较,若物理块中的页面号与所有的页面号都不同,则该页即为将来不再使用的页,将访问标记设置为1000,表示将来不会用,设置为一个很大数;若找到页号相同的则将其访问次序记入访问标记,比较访问标记,最大的即为最久不会被访问的,将其换出。 ⑵先进先出法(First In First Out): 该算法总是淘汰最先进入内存的页面,既选择在内存中驻留时间最久的页面予以淘汰。 在该算法的模拟过程中,每当某一页面进入内存时(包括页面置换时页面的置入),物理块中各页面访问标记自动加一,置换后,将置换页面所在的物理块中访问标记减一;这样能防止当物理块访问标记出现两个以上相同的值的错误执行,更好地模拟了先进先出法; ⑶最近最久未使用(Least Recently Used): 该算法以最近的过去作为不久将来的近似, 将过去最长一段时间里不曾被使用的页面置换掉。 在该算法的模拟过程中,每当物理块中的页面被访问时,便将其访问标记置为-1 以后每执行一条指令,便将物理块中各页面的访问标记加一,需置换时访问标记最大的便是将要被置换的。 #include iostream.h #includestdlib.h #includeconio.h #includestdio.h #define Bsize 4 typedef struct BLOCK//声明一种新类型——物理块类型 { int pagenum;//页号 int accessed;//访问字段,其值表示多久未被访问 }BLOCK; int pc;//程序计数器,用来记录指令的序号 int n;//缺页计数器,用来记录缺页的次数 static int temp[320];//用来存储320条随机数 B
文档评论(0)