Nachos虚拟内存机制实习报告范本.doc

Nachos虚拟内存机制实习报告范本.doc

ID:48185740

大小:548.50 KB

页数:17页

时间:2020-01-22

Nachos虚拟内存机制实习报告范本.doc_第1页
Nachos虚拟内存机制实习报告范本.doc_第2页
Nachos虚拟内存机制实习报告范本.doc_第3页
Nachos虚拟内存机制实习报告范本.doc_第4页
Nachos虚拟内存机制实习报告范本.doc_第5页
资源描述:

《Nachos虚拟内存机制实习报告范本.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、word格式虚拟内存机制实习报告善良的大姐姐2015.4.18....word格式目录一:总体概述3二:任务完成情况3任务完成列表(Y/N)3具体Exercise的完成情况3三:遇到的困难以及解决方法15四:收获及感想15五:对课程的意见和建议15六:参考文献15....word格式一:总体概述通过认真仔细阅读Nachos系统虚拟内存部分的源代码,理解虚拟内存的管理和应用机制,用户程序的运行逻辑,并修改源代码,达到“实现虚拟存储系统”的目标。二:任务完成情况任务完成列表(Y/N)Exercise1Exerci

2、se2Exercise3Exercise4Exercise5Exercise6Exercise7Challengeyesyesyesyesyesyesyesyes具体Exercise的完成情况Exercise1:源代码阅读Part1:阅读code/userprog/progtest.cc,着重理解nachos执行用户程序的过程,以及该过程中与内存管理相关的要点。阅读情况:用户程序执行过程:步骤相关解释在main函数中,如果检测到传入的参数和“执行用户程序”相关,那么执行StartProcess函数(progt

3、est.cc)在StartProcess函数中装载并运行一个用户程序StartProcess函数中:1.用OpenFile类打开文件OpenFile类在文件系统中定义,包括各种对文件的基本操作,如read,write。实质上是包装了操作系统的底层函数。2.用AddrSpace类创建一个用户空间,并将打开的文件装载进去创建用户空间包括:1.获取文件头,并将大小端做适宜转换;2.通过文件头计算出文件所需空间,包括代码段,初始化数据段,未初始化数据段,栈空间4个部分3.通过文件所需空间计算出文件所需的虚拟页数量4.

4、创建用户空间的pagetable,指示了第i个虚拟页(将)对应第i个物理页5.由于目前是最基本的【直接映射+....word格式单用户程序无切换】模式,因此此时要将所有的虚拟页中的内容写到物理页(主存)当中。3.(AddrSpace::InitRegisters())初始化用户空间中的各种寄存器,包括PC设为0,栈指针移到空间底部为执行用户程序做准备!4.(AddrSpace::RestoreState())将用户的部分状态(如pagetable)装载到machine类中,准备执行事实上,仅仅是将用户空间的P

5、agetable(在第二步创建的)装载到machine的指针中,相当于是用户程序在machine上运行时,是通过machine的pagetable映射找到对应内容运行的5.调用machine->Run,运行用户程序Machine->run是在mipssim.cc中定义的。其工作原理为:1.通过OneInstruction(instr)模拟mips,将一条指令进行分割,并软件模拟执行。其中,在OneInstruction函数中,通过machine->ReadMem,读取主存中当前PC值指向的地址里的指令。在Re

6、adMem函数中,通过Translate函数对传入的虚地址做转换。在Translate函数中,如果虚地址没有找到对应的实地址转换,就会抛出异常(返回异常值)。返回的异常值在ReadMem中判断,并传入RaiseException函数中RaiseException函数会调用ExceptionHandler函数对不同的异常做相应的处理。(以上是异常处理机制。在这里就顺便说了。)2.调用onetick让时间前进3.重复1,2Part2:阅读code/machine目录下的machine.h(cc),translat

7、e.h(cc)文件和code/userprog目录下的exception.h(cc),理解当前Nachos系统所采用的TLB机制和地址转换机制。TLB机制和地址转换机制:相关内容简单解释TranslationEntry类(translate.h),包括:virtualPage,physicalPage,以及一些标志位:valid,readonly等。标识了用户空间的第i个虚拟页应该映射到主存的第j个物理页,并且这个物理页目前所处的状态。(valid?readOnly?等)TLB初始化(machine.cc构造

8、函数):生成指定数量的TranslationTLB本身就类似于Pagetable的子集,有若干的的映射对。....word格式Entry构成的数组,并且设置均为Invalid.TLB的使用(translate.cctranslate函数):1.遍历TLB数组,查找是否有对应映射2.如果有,TLB命中,直接进行物理地址转换;否则,TLBMISS,进入Exception处理。(目前还没

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。