ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:312.17KB ,
资源ID:18595850      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18595850.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(nachos Lab7实习报告Word文件下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

nachos Lab7实习报告Word文件下载.docx

1、本次shell实现的基础是前面已经完成的相关功能。注意到nachos已经实现简单的shell,我们只需要在此基础上进行相关的修改。任务完成情况任务完成列表(Y/N)ExerciseY具体Exercise的完成情况设计实现一个用户程序shell,通过./nachos -x shell进入用户交互界面中。在该界面中可以查询支持的功能、可以创建删除文件或目录、可以执行另一个用户程序并输出运行结果,类似Linux上跑的bash。你实现的越完善,碰到的问题越多,学到的也会越多。本实验所修改的代码包括内核和用户程序两部分。首先,需要解析输入的命令,这部分现有程序已经完成Write(prompt, 2, o

2、utput);Read(&bufferi, 1, input);因为在Lab6中,我没有考虑标准输入和标准输出的问题,所以需要修改exception.cc处理read系统调用和处理write系统调用的部分针对处理read系统调用的部分,如果系统调用的第3个参数是0(表示标准输入),那么读取从用户界面输入的字符串存入相应的位置if(fd = 0) for (int i = 0; i count; i+) contenti = getchar();针对处理write系统调用的部分,如果系统调用的第3个参数是1(表示标准输出),那么输出缓冲区字符串到用户界面if(fd = 1) for(int i

3、= 0; putchar(contenti);执行./nachos -x ./test/shell,shell启动 然后,确定需要实现的命令功能命令使用方法执行用户程序xx 用户程序显示当前路径pwd列出当前目录ls切换当前路径cdcd 路径创建文件nfnf 文件名创建文件夹ndnd 文件夹名删除文件dfdf 文件名删除文件夹dddd 文件夹名显示帮助信息h退出q部分指令的实现依赖已经实现的系统调用,部分指令的实现需要新的系统调用,添加系统调用的流程(1)syscall.h中定义系统调用接口、系统调用号;(2)start.s中添加链接代码;(3)exception.cc中增加系统调用的处理过程

4、. 执行用户程序 x基本思路是通过已经实现的系统调用Exec执行用户程序,通过已经实现的系统调用Join等待用户程序执行结束shell.cif (buffer0 = x & buffer1 = ) newProc = Exec(buffer + 2);Join(newProc);测试结果如下,用户程序正常执行显示当前路径 pwd基本思路是添加系统调用Pwd,基于C函数system实现显示当前路径syscall.h#define SC_Pwd 11void Pwd();start.sPwd: addiu $2,$0,SC_Pwd syscall j $31 .end Pwdexception.c

5、cpw buffer2 = d buffer3 = 0) Pwd();列出当前目录 ls基本思路是添加系统调用Ls,基于C函数system实现显示当前路径#define SC_Ls 12void Ls();Ls: addiu $2,$0,SC_Ls .end Lsls Ls();显示当期路径,列出当前目录,结果符合实际切换当前路径 cd基本思路是添加系统调用Cd,基于C函数chdir实现切换当前路径#define SC_Cd 13void Cd(char* name);Cd: addiu $2,$0,SC_Cd .end Cdc Cd(buffer + 3);首先切换到上级目录(.),然后切换

6、到目录test,结果符合实际创建文件nf基本思路是通过已经实现的系统调用Create创建文件nf Create(buffer + 3);删除文件 df基本思路是添加系统调用Remove,基于已经实现的Remove函数实现文件的删除,删除文件时使用添加的系统调用Remove#define SC_Remove 14void Remove(char* name);Remove: addiu $2,$0,SC_Remove .end Remove Remove(buffer + 3);在文件夹Lab7创建删除部分文件,结果符合实际 创建文件夹 nd基本思路是添加系统调用CreateDir,基于C函数m

7、kdir实现文件夹的建立#define SC_CreateDir 15void CreateDir(char* name);CreateDir: addiu $2,$0,SC_CreateDir .end CreateDir CreateDir(buffer + 3);删除文件夹 dd 基本思路是添加系统调用RemoveDir,基与C函数rmdir实现文件夹的删除#define SC_RemoveDir 16void RemoveDir(char* name);RemoveDir: addiu $2,$0,SC_RemoveDir .end RemoveDir RemoveDir(buffer

8、 + 3);在文件夹Lab7创建删除部分文件和文件夹,结果符合实际需要说明的是,如果使用C函数remove,可以利用统一的命令实现文件的删除和文件夹的删除,并且文件夹的删除是递归的。显示帮助信息h基本思路是添加系统调用Help,显示帮助信息#define SC_Help 17void Help();Help: addiu $2,$0,SC_Help .end HelphHelp();退出 q基本思路是通过已经实现的系统调用Exit退出shellq) Exit(0);测试结果如下,shell正常退出遇到的困难以及解决方法困难:通过C程序与Linux系统交互我选择使用Linux文件系统完成实习,n

9、achos已经实现的相关函数相对有限,其中文件/文件夹的建立和删除以及相关信息的查询实际上可以通过C的相关函数完成,当然,我们也可以使用nachos的文件系统完成实习,在这样的情况下,我们主要依靠Lab5文件系统实习和Lab6系统调用实习实现的相关函数收获及感想前面的实习顺利完成并且深入理解后,本次实习并不是特别困难,只需要实现shell用户程序并且添加部分系统调用即可对课程的意见和建议我觉得课程形式好,互动强,使我受益匪浅。助教认真负责,知识充分,为课程付出很多,助教辛苦了:-D参考文献1nachos中文教程2NachOS实验报告(4个全)3Nachos的shell实现4Nachos实验代码

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1