1实习报告模板.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
 1实习报告模板

系统调用实习报告姓名:文世为 学号:1100012968 日期:2014.5.12目录 内容一:总体概述 3 内容二:任务完成情况 3 任务完成列表(Y/N) 3 具体Exercise的完成情况 3 内容三:遇到的困难以及解决方法 4 内容四:收获及感想 5 内容五:对课程的意见和建议 5 内容六:参考文献 5内容一:总体概述 本次试验主要是了解nachos系统调用的实现机制,并实现相关的系统调用。 【用简洁的语言描述本次lab的主要内容;阐述本次lab中涉及到的重要的概念,技术,原理等,以及其他你认为的最重要的知识点。这一部分主要是看大家对lab的总体的理解。 要求:简洁,不需要面面俱到,把重要的知识点阐述清楚即可。】 内容二:任务完成情况 任务完成列表(Y/N) Exercise1 Exercise2 Exercise3 Exercise4 Exercise5 Exercise6 第一部分 Y/N Y/N Y/N第二部分 Y/N Y/N Y/N第三部分 Y/N第四部分 Y/N Y/N Y/N Y/N Y/N Y/N 具体Exercise的完成情况 第一部分 Exercise1源代码阅读 阅读与系统调用相关的源代码,理解系统调用的实现原理。 code/userprog/syscall.h code/userprog/exception.cc code/test/start.s 下面我从系统调用的流程角度来叙述上述文件。 当用户程序调用系统调用接口时,Nachos会执行与此系统调用相对应的Stub.系统调用的Stub定义在start.s文件中.Stub主要完成三件事情. 将系统调用号写入2号寄存器 执行syscall指令 返回到31号寄存器存放的地址处,该地址为用户程序返回地址.这里说的系统调用号,是Nachos为系统调用接口指定的一个整形编号,该编号定义在syscall.h文件中,syscall.h文件中还定义了系统调用接口.默认情况下,Nachos定义了11个系统调用号,每个号对应一个系统调用.比如SC_Halt为0,对应着系统调用Halt. 当系统执行syscall指令时,在MIPS处理器的模拟器中会捕获该指令,对应的代码在mipssim.cc的OneInstruction方法中exception.cc中的RaiseException函数中, interrupt-setStatusSystemMode,此时系统进入核心态,接着执ExceptionHandlerwitch,ExceptionHandler方法在exception内进行实现exceptoinHandler首先从2号寄存处中取出系统调用号,然后判断发生的异常是不是SyscallException和系统调用好是不是SC_Halt如果是,则调用interrupt-Halt执行Halt方法的具体代码.注意这儿有两个条件判断,一是判断不是系统调用异常,而是根据系统调用号执行系统调用的具体代码.此处只对Halt系统调用进行了处理,我们可以在这儿扩展其他系统调用的处理代码。 执行完ExceptionHandler后,会回到machine.cc的RaiseException代码,继续执行interrupt-setStatusUserModel,重新回到用户态.RaiseException方法执行完后,回到Stub继续执行返回用户程序指令j $31。回到用户程序继续执行。 Exercise1 系统调用实现 类比Halt的实现,完成与文件系统相关的系统调用:Create, Open,Close,Write,Read。Syscall.h文件中有这些系统调用基本说明。 在ExceptionHandler中加入对这几个系统调用的判断和处理即可。 从寄存器读取参数时,如果寄存器存放的是地址,需要从该地址中读取字符串,则通过以下函数实现。 由于系统调用不让PC+4,我们需要自己实现PC+4: 令PC寄存器指向下一条指令的函数为machine-AdvancePC。在machine.cc中实现。 处理Create调用的代码为: 处理Open调用的代码为: 处理Close调用的代码为: 处理Write调用的代码为: 处理Read调用的代码为:Exercise2编写并运行用户程序,调用 练习2中所写的系统调用,测试其正确性。 首先编写create.c如下: #include “syscall.h” int main Create “wsw.txt”, “/root”,1; Halt; return 0; 键入命令行 nachos -x create /root; 在编写write.c如下: #include

文档评论(0)

sipin25bh + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档