- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
\*
虚拟内存机制实习报告
目录
\ \ \ \ \ 一:总体概述 \
\ 二:任务完成情况 \
\ 任务完成列表() \
\ 具体的完成情况 \
\ 三:遇到的困难以及解决方法 \
\ 四:收获及感想 \
\ 五:对课程的意见和建议 \
\ 六:参考文献 \
一:总体概述
通过认真仔细阅读系统虚拟内存部分的源代码,理解虚拟内存的管理和应用机制,用户程序的运行逻辑,并修改源代码,达到“实现虚拟存储系统”的目标。
二:任务完成情况
任务完成列表()
具体的完成情况
: 源代码阅读
: 阅读,着重理解执行用户程序的过程,以及该过程中与内存管理相关的要点。
阅读情况:
用户程序执行过程:
步骤
相关解释
在函数中,如果检测到传入的参数和“执行用户程序”相关,那么执行函数()
在函数中装载并运行一个用户程序
函数中:
用类打开文件
类在文件系统中定义,包括各种对文件的基本操作,如。实质上是包装了操作系统的底层函数。
用类创建一个用户空间,并将打开的文件装载进去
创建用户空间包括:
获取文件头,并将大小端做适宜转换;
通过文件头计算出文件所需空间,包括代码段,初始化数据段,未初始化数据段,栈空间个部分
通过文件所需空间计算出文件所需的虚拟页数量
创建用户空间的,指示了第个虚拟页(将)对应第个物理页
由于目前是最基本的【直接映射单用户程序无切换】模式,因此此时要将所有的虚拟页中的内容写到物理页(主存)当中。
. (())初始化用户空间中的各种寄存器,包括设为,栈指针移到空间底部
为执行用户程序做准备!
(())将用户的部分状态(如)装载到类中,准备执行
事实上,仅仅是将用户空间的(在第二步创建的)装载到的指针中,相当于是用户程序在上运行时,是通过的映射找到对应内容运行的
调用,运行用户程序
是在中定义的。
其工作原理为:
通过()模拟,将一条指令进行分割,并软件模拟执行。
其中,在函数中,通过,读取主存中当前值指向的地址里的指令。
在函数中,通过函数对传入的虚地址做转换。
在函数中,如果虚地址没有找到对应的实地址转换,就会抛出异常(返回异常值)。
返回的异常值在中判断,并传入函数中
函数会调用函数对不同的异常做相应的处理。
(以上是异常处理机制。在这里就顺便说了。)
调用让时间前进
重复
: 阅读目录下的(),()文件和目录下的(),理解当前系统所采用的机制和地址转换机制。
机制和地址转换机制:
相关内容
简单解释
类(),包括:
, ,
以及一些标志位:等。
标识了用户空间的第个虚拟页应该映射到主存的第个物理页,并且这个物理页目前所处的状态。(? ?等)
初始化( 构造函数):
生成指定数量的构成的数组,并且设置均为.
本身就类似于的子集,有若干的的映射对。
的使用( 函数):
遍历数组,查找是否有对应映射
如果有,命中,直接进行物理地址转换;否则, ,进入处理。(目前还没有对应的处理函数)
无
地址转换机制:
在 函数中进行。
通过,计算出和;
通过或是直接通过,获得对应的;(否则抛出异常,在异常处理函数中做处理,但目前这部分没有实现)
通过和得到物理地址,将物理地址返回。
无
或是处理():
在上一个表格中已经对异常处理是如何进入的做了介绍。
但这里要补充一点:
在处理完 或是之后,不需要将,因为异常处理函数结束后,返回的最终位置会是函数的取指阶段。取指失败后,函数会退出,然后再用同样的取一次指令。而这次就能够 或者 了。
无
: 异常处理
任务:修改目录下中的函数,使得系统可以对异常进行处理(异常时,系统会抛出,详见)。
完成情况:
关于异常处理的机理已经在 中说明了。因此能够对异常进行处理,我们只要在判断传入的参数为的异常,并对其进行处理即可。
事实上,我在实际操作的时候, 和,抛出的异常都是,此后再判断是否为空。如果为空,则执行;否则,执行。
:
步骤
简单解释
从的寄存器中取出发生异常的虚拟地址,并算出;
在函数中,将发生异常的虚拟地址放入该寄存器的。
扫描,寻找该对应的项。目前情况,是一定可以找到的。
由于目前用户程序运行的机理是:
将所有全部写入主存中,并且全部做好了虚实映射,放在自己的中。当需要加载这个用户程序时,会获得这个。于是相当于是,通过这个,可以得到用户空间所有虚地址对应的实地址。因此当 时,查找,是一定不会的。
接下来是寻找放入的位置:
先考虑中的项,如果存在,写入该项;
如果不存在项,那么就涉及置换算法,这在 中介绍。
总之最后一定可以找到一个放置新的项的位置。
无
: 置换算法
任务:为机制实现至少两种置换
原创力文档


文档评论(0)