分页系统模拟实验.doc

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分页系统模拟实验

******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2013年秋季学期 操作系统原理课程设计 题 目: 分页系统模拟实验 专业班级:计算机科学与技术基地班 姓 名: 孙要全 学 号: 指导教师: 王旭阳 成 绩: _______________ 目 录 前 言 3 摘 要 4 1设计思想 5 2相关的各模块的伪码算法 6 3函数的调用关系图 12 4调试结果 14 总 结 17 参考文献 18 致 谢 19 附件Ⅰ源程序代码 20 前 言 分页式虚拟存储系统将作业信息的副本存放在磁盘中,不把作业的程序和数据全部装入主存,仅装入立即使用的页面,在执行过程中访问到不在主存的页面时,产生缺页中断,再把它们动态地装入。 虚拟存储的基本思想是基于程序的局部性原理,仅把目前需要的部分程序加载到内存,其余暂时不用的程序及数据还保留在辅存中。在进程运行过程中,如果所要执行的程序不在内存,系统要将要执行的程序段自动调入内存。 此时如果内存已满,则要通过MMU(Memory Management Unit)来完成。 存储管理一直是操作系统中的重要组成部分,因为冯·诺依曼体系结构就是建立在存储程序概念上的,访问存储器的操作占CPU时间的70%左右。计算机系统中的存储器一般分为主存储器(简称主存、内存)和辅助存储器(简称辅存)。由于CPU只能直接与内存进行通信,因此计算机系统的程序以及与该程序相关的数据,只有被装入到内存中才能有效地执行。计算机系统能否高效地管理内存空间,不仅直接反映存储器的利用率,还会影响整个操作系统的性能。 摘 要 请求分页虚拟存储系统时间作业信息的副本存放在磁盘这一类辅助存储器中当作业被调度投入运行时,并不把作业的程序和数据全部装入主存,而仅仅装入立即使用的那些页面,至少要将作业的第一页信息装入主存,在执行过程中访问到不在主存的页面时,再把它们动态装入。分页式虚拟存储管理是请求分页,当需要执行某条指令或使用某个数据,而发现它们不再主存时,产生一个缺页中断,系统从辅存中把该指令或数据所在的页面调入内存。 关键词:分页 虚拟 辅存 缺页中断 1设计思想 1.1算法思想 1)先进先出法(First In First Out): 该算法总是淘汰最先进入内存的页面,既选择在内存中驻留时间最久的页面予以淘汰。 在该算法的模拟过程中,每当页面需要被置换进入内存时,最先进入内存的内容们都依次向底移一位,需要访问的内容存入数组0号单元,即最顶部,这时缺页数加1;当不需要进行页面置换,即所需访问的内容在内存中时,不需要操作,继续读下一条指令。这样就实现了总是淘汰最先进入内存的页面,选择了在内存中驻留时间最久的页面予以淘汰。 (2)最近最久未使用(Least Recently Used): 该算法将过去最长一段时间里不曾被使用的页面置换掉。 在该算法的模拟过程中,每当页面需要被置换进入内存时,最先进入内存的内容们都依次向底移一位,需要访问的内容存入数组0号单元,即最顶部,这时缺页数加1;当不需要进行页面置换,即所需访问的内容在内存中时,将要访问的指令移到内存顶部,其他指令依次向下移一位,这样就把最久不用的指令沉到了底部,有必要时淘汰,即实现了总是淘汰最近最久未使用的指令。 1.2.功能设计: (1) void changeaddr(struct Page p[],int logaddr)的功能 实现模拟请求分页虚拟存储管理中的硬件地址变化过程。 (2)chushihua()函数的功能: 先由Srand()和Rand()函数定义和产生指令序列,然后将指令序列变换成相应的页地址流Else{ cout该页不在主存,产生缺页中断endl; } 详细设计如下: void changeaddr(struct Page p[],int logaddr) //地址变换 { int j=logaddr/64;//对应的块号 int k=logaddr%64;//对应的偏移量 int flag=0; int addr; for(int i=0;i8;i++) { if(p[i].pno==j)//找到对应的页号 { if(p[i].flag==1)//页面标志为1 { addr=p[i].cno*64+k; cout物理地址为: addrendl; cout详细信息: \t页面号:p[i].pno\t主存

文档评论(0)

wyjy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档