nachosLab实习报告.doc
《nachosLab实习报告.doc》由会员分享,可在线阅读,更多相关《nachosLab实习报告.doc(15页珍藏版)》请在咨信网上搜索。
1、系统调用实习报告目录内容一:总体概述3内容二:任务完成情况3任务完成列表(Y/N)3具体Exercise得完成情况3内容三:遇到得困难以及解决方法16内容四:收获及感想16内容五:对课程得意见与建议16内容六:参考文献16内容一:总体概述 本次lab得主要内容就是实现nachos定义得系统调用。理论方面,我们需要了解nachos系统调用得实现原理,实践方面,我们需要实现文进系统相关系统调用与用户程序相关系统调用,并且编写用户程序验证相关系统调用得正确性。内容二:任务完成情况任务完成列表(Y/N)Exercise1Exercise2Exercise3Exercise4Exercise5YYYYY
2、具体Exercise得完成情况一、理解Nachos系统调用Exercise 1 源代码阅读 阅读与系统调用相关得源代码,理解系统调用得实现原理。 code/userprog/syscall、h code/userprog/exception、cccode/test/start、suserprog/syscall、h定义nachos得系统调用,主要包括系统调用号与系统调用函数,内核通过识别用户程序传递得系统调用号确定系统调用类型已经实现得系统调用包括void Halt(); 关闭nachos虚拟机,打印性能统计信息需要实现得系统调用包括:3种系统调用涉及地址空间:1)、void Exit(int
3、 status);用户程序完成,status = 0表示正常退出2)、SpaceId Exec(char *name);加载并执行名字就是name得Nachos可执行文件,返回其地址空间得标志符SpaceId实际就是整型,标识地址空间3)、int Join(SpaceId id); 等待标志符为id得用户线程运行完毕,返回其退出状态5种系统调用涉及文件系统:1)、void Create(char *name);创建文件名name得Nachos文件2) 、OpenFileId Open(char *name);打开文件名name得Nachos文件,返回打开文件标志符OpenFileId实际就是整
4、形,标识打开文件3)、void Write(char *buffer, int size, OpenFileId id);向标志符就是id得文件写入buffer中长度为size字节得数据4)、int Read(char *buffer, int size, OpenFileId id);从标志符就是id得文件读取长度为size字节得数据存入buffer,返回实际读取得字节数5)、void Close(OpenFileId id);关闭标志符就是id得文件2种系统调用涉及用户级线程,用于支持多线程用户程序:1)、void Fork(void (*func)();创建与当前线程拥有相同地址空间得线
5、程,运行func指针指向得函数2)、void Yield();当前线程让出CPUcode/userprog/exception、cc定义进行异常处理得ExceptionHandler函数,主要流程就是根据异常信息处理不同异常,包括系统调用目前支持得异常: NoException, / 正常 SyscallException, / 系统调用PageFaultException, / 缺页(页表/快表)ReadOnlyException, / 访问只读页面 BusErrorException, / 总线错误AddressErrorException, / 访问地址对齐错误/超出范围 Overflo
6、wException, / 算数溢出 IllegalInstrException, / 非法指令 NumExceptionTypes处理系统调用时,需要从2号寄存器获得系统调用号确定系统调用类型code/test/start、s就是辅助用户程序运行得汇编代码,主要包括初始化用户程序与系统调用相关操作(1)初始化用户程序:通过调用main函数运行用户程序、globl _start、ent_start_start:jalmain /跳转到main函数执行用户程序move$4,$0 /main函数返回 /r4寄存器存入0,作为下面调用Exit参数jalExit 、end _start(2)系统调用:
7、用户程序执行系统调用时,将系统调用号存入r2寄存器,然后跳转到exception、cc执行,例如系统调用Halt:Halt: addiu $2,$0,SC_Halt/将系统调用号存入r2寄存器syscallj$31、end Halt系统调用相关寄存器:r2-系统调用号,系统调用返回值r4-系统调用参数1r5-系统调用参数2r6-系统调用参数3r7-系统调用参数4系统调用主要流程:machine得Run函数运行用户程序,实现在machine/mipssim、cc,基本流程就是通过OneInstruction函数完成指令译码与执行,通过interrupt得OneTick函数使得时钟前进(1) On
8、eInstruction函数判断当前指令就是系统调用,转入start、s(2) 通过start、s确定系统调用入口,通过寄存器r2传递系统调用号,转入exception、cc(此时系统调用参数位于相应寄存器)(3) exception、cc通过系统调用号识别系统调用,进行相关处理,如果系统调用存在返回值,那么通过寄存器r2传递,流程结束时,需要更新PC(4) 系统调用结束,程序继续执行添加系统调用:(1) syscall、h定义系统调用接口、系统调用号(2)code/test/start、s添加链接代码(3)exception、cc添加系统调用处理过程二、文件系统相关得系统调用Exercise
9、 2 系统调用实现类比Halt得实现,完成与文件系统相关得系统调用:Create, Open,Close,Write,Read。Syscall、h文件中有这些系统调用基本说明。基本思路:修改userprog/exception、cc,按照userprog/syscall、h得定义实现系统调用系统调用Create定义void Create(char *name);系统调用Create基本流程(1) 通过寄存器r4获得文件名指针(2) 使用文件名指针通过已经实现ReadMem函数获得文件名(3) 通过已经实现得Create函数创建文件(4) 通过函数PC_advance更新PC系统调用Open定义
10、OpenFileId Open(char *name);系统调用Open基本流程(1)通过寄存器r4获得文件名指针(2)使用文件名指针通过已经实现ReadMem函数获得文件名(3)通过已经实现得Open函数打开文件(4)返回值(打开文件数据结构)写入寄存器r2(5)通过函数PC_advance更新PC系统调用Close定义void Close(OpenFileId id);系统调用Close基本流程(1) 通过寄存器r4获得打开文件数据结构(2) 通过打开文件数据结构析构函数关闭文件(3) 通过函数PC_advance更新PC系统调用Read定义int Read(char *buffer, i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- nachosLab 实习 报告
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。