- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
nachosLab4实习报告剖析
虚拟内存实习报告
目录
内容一:总体概述 3
内容二:任务完成情况 3
任务完成列表(Y/N) 3
具体Exercise的完成情况 3
内容三:遇到的困难以及解决方法 23
内容四:收获及感想 24
内容五:对课程的意见和建议 24
内容六:参考文献 24
内容一:总体概述
实习的主要内容是了解和改进nachos存储管理相关实现,主要分为三个部分。第一部分的主要内容是实现TLB相关异常处理和置换算法,第二部分的主要内容是实现全局内存管理机制,使得nachos内存可以同时存在复数线程,第三部分的主要内容是实现程序运行时载入所需页面。扩展部分主要是增加线程挂起状态以及实现倒排页表。
内容二:任务完成情况
任务完成列表(Y/N)
Exercise1 Exercise2 Exercise3 Exercise4 Exercise5 Exercise6 Exercise7 Y Y Y Y Y Y Y Challenge1 Challenge2 Y Y 具体Exercise的完成情况
TLB异常处理
目前,Nachos系统对于内存的管理是基于软件模拟的TLB机制。其工作原理、异常处理、替换算法等方面,与分页式内存管理非常相像。
Exercise1 源代码阅读
阅读code/userprog/progtest.cc,着重理解nachos执行用户程序的过程,以及该过程中与内存管理相关的要点。
阅读code/machine目录下的machine.h(cc),translate.h(cc)文件和code/userprog目录下的exception.h(cc),理解当前Nachos系统所采用的TLB机制和地址转换机制
(1)用户程序执行过程
userprog/progtest.cc定义函数StartProcess主要功能是实现用户程序启动,如果我们希望执行test中的用户程序,那么我们进入userprog,执行./nachos -x ../test/(用户程序),通过识别-x参数,nachos调用StartProcess执行用户程序(具体实现在threads/main.cc)
StartProcess的基本流程是,通过文件系统定义的OpenFile打开相关文件,通过AddrSpace的构造函数建立用户空间,装载文件,通过AddrSpace的InitRegisters函数初始化用户寄存器,通过AddrSpace的RestoreState函数装载页表,通过machine的Run函数运行用户程序
AddrSpace的构造函数实现在userprog/addrspace.cc,主要流程是,获取文件头,大小端做适宜转换,通过文件头计算文件所需空间,包括代码段,初始化数据段,未初始化数据段,栈空间4个部分,通过文件所需空间计算出文件所需的虚拟页面数量,创建用户空间页表,指示了第i个虚拟页对应第i个物理页,将用户程序的正文段和相关数据依次调入内存
AddrSpace的InitRegisters函数实现在userprog/addrspace.cc,主要流程是初始化普通寄存器(初始化为0),初始化当前指令指针(PC,初始化为0),初始化下一条指令指针(初始化为4),初始化栈指针(地址空间尾部适当前移)
AddrSpace的RestoreState函数实现在userprog/addrspace.cc,主要流程是将页表装载到machine类中,准备执行用户程序
machine的Run函数实现在machine/mipssim.cc,基本流程是通过OneInstruction函数完成指令译码和执行,通过interrupt的OneTick函数使得时钟前进
machine的Run函数通过machine的ReadMem函数读内存数据,通过machine的WriteMem函数写内存数据,两个函数的实现在machine/translate.cc,核心是translate函数,translate函数实现在machine/translate.cc,主要功能是实现虚拟地址到物理地址的转换,translate函数可能返回相应的错误,在这样的情况下,ReadMem函数/WriteMem函数调用RaiseException函数进行处理,RaiseException函数定义在machine/machine.cc,基本流程是将错误信息存储在特定位置,调用ExceptionHandler函数处理不同的错误,ExceptionHandler函数实现在userprog/exception.cc,主要流程是根据错误信息处理不同错误。
目前支持的错误
NoException, // 正常
SyscallEx
您可能关注的文档
- Multisim2001在电子电路设计中的应用_02Multisim基本操作剖析.ppt
- 第三章单元测试题(二)课件.doc
- mybaties配置剖析.docx
- 第三章单据课件.ppt
- MyBatisxml配置文件详解剖析.doc
- 第三章压力容器基础知识04课件.ppt
- MyBatis的Mapper文件配置详解剖析.docx
- 第三章单相异步电动机运行分析课件.ppt
- multisim电子电路仿真教程第1章剖析.ppt
- mybatis第二章(朱磊)孔剖析.doc
- 2024年江苏常州市卫生健康委员会直属事业单位招考聘用26人笔试历年典型考题与考点剖析含答案详解.docx
- 2024年国家大剧院招考聘用30人笔试历年典型考题与考点剖析含答案详解.docx
- 2024年06月辽宁盘锦客运公交集团第二季社会公开招聘22名工作人员笔试历年典型考题与考点剖析含答案.docx
- 2024年3月广东韶关市始兴县青年人才招考聘用30人笔试历年典型考题与考点剖析含答案详解.docx
- 2024年07月湖南省常德市鼎城区2024年面向全市公开选调10名公务员笔试历年典型考题与考点剖析含.docx
- 2024年07月湖北省阳新县2024年招考100名村主职干部助理笔试历年典型考题与考点剖析含答案详解.docx
- 2024年山东青岛市城阳区卫生健康局所属事业单位招考聘用8人笔试历年典型考题与考点剖析含答案详解.docx
- 2024年3月上半年四川省经济和信息化厅直属事业单位招考聘用156人笔试历年典型考题与考点剖析含答案.docx
- 2024年07月浙江舟山市定海区人力资源和社会保障局公开招聘编外用工人员1人笔试历年典型考题与考点剖.docx
- 2024年07月安徽六安舒城县乡镇卫生院“县管乡用”公开招聘21人笔试历年典型考题与考点剖析含答案详.docx
最近下载
- 《克拉玛依市城市总体规划》(2014-2030年).pdf
- The Blue Planet《蓝色星球(2001)》第一季第三集完整中英文对照剧本.docx VIP
- 新教科版五年级上册科学全册教学反思.doc
- 抗风湿病药物性肝损伤诊治中国专家共识(2024年版)解读.pptx
- GB 50966-2014 电动汽车充电站设计规范.docx
- 国家开放大学《商务英语4》章节自测1-8参考答案.pdf
- 实验九 动物细胞内微丝结构的观察(鬼笔环肽标记法).ppt
- 全国大学生职业规划大赛获奖PPT模板.pptx
- 《机械设计基础(第三版)习题册》参考答案.pdf VIP
- The Blue Planet《蓝色星球(2001)》第一季第四集完整中英文对照剧本.docx VIP
文档评论(0)