网站大量收购独家精品文档,联系QQ:2885784924

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

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
虚拟内存机制实习报告 善良的大姐姐 .4.18 目录 TOC \o 1-3 \h \z \u 一:总体概述 3 二:任务完毕状况 3 任务完毕列表(Y/N) 3 具体Exercise的完毕状况 3 三:碰到的困难以及解决办法 15 四:收获及感想 15 五:对课程的意见和建议 15 六:参考文献 15 一:总体概述 通过认真认真阅读Nachos系统虚拟内存部分的源代码,理解虚拟内存的管理和应用机制,顾客程序的运行逻辑,并修改源代码,达成“实现虚拟存储系统”的目的。 二:任务完毕状况 任务完毕列表(Y/N) Exercise1 Exercise2 Exercise3 Exercise4 Exercise5 Exercise6 Exercise7 Challenge yes yes yes yes yes yes yes yes 具体Exercise的完毕状况 Exercise 1: 源代码阅读 Part1: 阅读code/userprog/progtest.cc,着重理解nachos执行顾客程序的过程,以及该过程中与内存管理有关的要点。 阅读状况: 顾客程序执行过程: 环节 有关解释 在main函数中,如果检测到传入的参数和“执行顾客程序”有关,那么执行StartProcess函数(progtest.cc) 在StartProcess函数中装载并运行一种顾客程序 StartProcess函数中: 用OpenFile类打开文献 OpenFile类在文献系统中定义,涉及多个对文献的基本操作,如read,write。实质上是包装了操作系统的底层函数。 用AddrSpace类创立一种顾客空间,并将打开的文献装载进去 创立顾客空间涉及: 获取文献头,并将大小端做适宜转换; 通过文献头计算出文献所需空间,涉及代码段,初始化数据段,未初始化数据段,栈空间4个部分 通过文献所需空间计算出文献所需的虚拟页数量 创立顾客空间的pagetable,批示了第i个虚拟页(将)对应第i个物理页 由于现在是最基本的【直接映射+单顾客程序无切换】模式,因此此时要将全部的虚拟页中的内容写到物理页(主存)当中。 3. (AddrSpace::InitRegisters())初始化顾客空间中的多个寄存器,涉及PC设为0,栈指针移到空间底部 为执行顾客程序做准备! (AddrSpace::RestoreState())将顾客的部分状态(如pagetable)装载到machine类中,准备执行 事实上,仅仅是将顾客空间的Pagetable(在第二步创立的)装载到machine的指针中,相称于是顾客程序在machine上运行时,是通过machine的pagetable映射找到对应内容运行的 调用machine-Run,运行顾客程序 Machine-run是在mipssim.cc中定义的。 其工作原理为: 通过OneInstruction(instr)模拟mips,将一条指令进行分割,并软件模拟执行。 其中,在OneInstruction函数中,通过machine-ReadMem,读取主存中现在PC值指向的地址里的指令。 在ReadMem函数中,通过Translate函数对传入的虚地址做转换。 在Translate函数中,如果虚地址没有找到对应的实地址转换,就会抛出异常(返回异常值)。 返回的异常值在ReadMem中判断,并传入RaiseException函数中 RaiseException函数会调用ExceptionHandler函数对不同的异常做对应的解决。 (以上是异常解决机制。在这里就顺便说了。) 调用onetick让时间迈进 重复1,2 Part2: 阅读code/machine目录下的machine.h(cc),translate.h(cc)文献和code/userprog目录下的exception.h(cc),理解现在Nachos系统所采用的TLB机制和地址转换机制。 TLB机制和地址转换机制: 有关内容 简朴解释 TranslationEntry类(translate.h),涉及: virtualPage, physicalPage, 以及某些标志位:valid,readonly等。 标记了顾客空间的第i个虚拟页应当映射到主存的第j个物理页,并且这个物理页现在所处的状态。(valid? readOnly?等) TLB初始化(machine.cc 构造函数): 生成指定数量的TranslationEntry构成的数组,并且设立均为Invalid. TLB本身就类似于Pagetable的子集,有若干的vpn,ppn的映射对。 TLB的使用(translate.cc translat

文档评论(0)

130****8663 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档