




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
shell实现实习报告目录内容一:总体概述3内容二:任务完成情况3任务完成列表(Y/N)3具体Exercise的完成情况3内容三:遇到的困难以及解决方法13内容四:收获及感想13内容五:对课程的意见和建议13内容六:参考文献13内容一:总体概述 本次实习需要实现用户程序shell。shell是提供使用者使用界面的软件(命令解析器),他接收用户命令,然后调用相应的应用程序。本次shell实现的基础是前面已经完成的相关功能。注意到nachos已经实现简单的shell,我们只需要在此基础上进行相关的修改。内容二:任务完成情况任务完成列表(Y/N)ExerciseY具体Exercise的完成情况设计实现一个用户程序shell,通过./nachos -x shell进入用户交互界面中。在该界面中可以查询支持的功能、可以创建删除文件或目录、可以执行另一个用户程序并输出运行结果,类似Linux上跑的bash。你实现的越完善,碰到的问题越多,学到的也会越多。本实验所修改的代码包括内核和用户程序两部分。首先,需要解析输入的命令,这部分现有程序已经完成Write(prompt, 2, output);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 = 0; i count; i+) putchar(contenti);执行./nachos -x ./test/shell,shell启动 然后,确定需要实现的命令功能命令使用方法执行用户程序xx 用户程序显示当前路径pwdpwd列出当前目录lsls切换当前路径cdcd 路径创建文件nfnf 文件名创建文件夹ndnd 文件夹名删除文件dfdf 文件名删除文件夹dddd 文件夹名显示帮助信息hh退出qq部分指令的实现依赖已经实现的系统调用,部分指令的实现需要新的系统调用,添加系统调用的流程(1)syscall.h中定义系统调用接口、系统调用号;(2)start.s中添加链接代码;(3)exception.cc中增加系统调用的处理过程. 执行用户程序 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_Pwdsyscallj$31.end Pwdexception.ccshell.cif (buffer0 = p & buffer1 = w & buffer2 = d & buffer3 = 0) Pwd();列出当前目录 ls基本思路是添加系统调用Ls,基于C函数system实现显示当前路径syscall.h#define SC_Ls 12void Ls();start.sLs:addiu $2,$0,SC_Lssyscallj$31.end Lsexception.ccshell.cif (buffer0 = l & buffer1 = s & buffer2 = 0) Ls();显示当期路径,列出当前目录,结果符合实际切换当前路径 cd基本思路是添加系统调用Cd,基于C函数chdir实现切换当前路径syscall.h#define SC_Cd 13void Cd(char* name);start.sCd:addiu $2,$0,SC_Cdsyscallj$31.end Cdexception.ccshell.cif (buffer0 = c & buffer1 = d& buffer2 = ) Cd(buffer + 3);首先切换到上级目录(.),然后切换到目录test,结果符合实际创建文件nf基本思路是通过已经实现的系统调用Create创建文件shell.cif (buffer0 = n & buffer1 = f& buffer2 = ) Create(buffer + 3);删除文件 df基本思路是添加系统调用Remove,基于已经实现的Remove函数实现文件的删除,删除文件时使用添加的系统调用Removesyscall.h#define SC_Remove 14void Remove(char* name);start.sRemove:addiu $2,$0,SC_Removesyscallj$31.end Removeexception.ccshell.cif (buffer0 = d & buffer1 = f& buffer2 = ) Remove(buffer + 3);在文件夹Lab7创建删除部分文件,结果符合实际 创建文件夹 nd基本思路是添加系统调用CreateDir,基于C函数mkdir实现文件夹的建立syscall.h#define SC_CreateDir 15void CreateDir(char* name);start.sCreateDir:addiu $2,$0,SC_CreateDirsyscallj$31.end CreateDirexception.ccshell.cif (buffer0 = n & buffer1 = d& buffer2 = ) CreateDir(buffer + 3);删除文件夹 dd 基本思路是添加系统调用RemoveDir,基与C函数rmdir实现文件夹的删除syscall.h#define SC_RemoveDir 16void RemoveDir(char* name);start.sRemoveDir:addiu $2,$0,SC_RemoveDirsyscallj$31.end RemoveDirexception.ccshell.cif (buffer0 = d & buffer1 = d& buffer2 = ) RemoveDir(buffer + 3);在文件夹Lab7创建删除部分文件和文件夹,结果符合实际需要说明的是,如果使用C函数remove,可以利用统一的命令实现文件的删除和文件夹的删除,并且文件夹的删除是递归的。显示帮助信息h基本思路是添加系统调用Help,显示帮助信息syscall.h#define SC_Help 17void Help();start.sHelp:addiu $2,$0,SC_Helpsyscallj$31.end Helpexception.ccshell.cif (buffer0 = h & buffer1 = 0)Help();退出 q基本思路是通过已经实现的系统调用Exit退出shellshell.cif (buffer0 = q & buffer1 = 0) Exit(0);测试结果如下,shell正常退出内容三:遇到的困难以及解决方法困难:通过C程序与Linux系统交互我选择使用Linux文件系统完成实习,nachos已经实现的相关函数相对有限,其中文件/文件夹的建立和删除以及相关信息的查询实际上可以通过C的相关函数完成,当然,我们也可以使用nachos的文件系统完成实习,在这样的情况下,我们主要依靠Lab5文件系统实习和Lab6系统调用实习实现的相关函数内容四:收获及感想前面的实习顺利完成并且深入理解后,本次实习并不是特别困难,只需要实现shell用户程序并且添加部分系统调用即可内容五:对课程的意见和建议我觉得课程形式好,互动强,使我受益匪浅。我觉得课程形式好,互动强,使我受益匪浅。助教认真负责,知识充分,为课程付出很多,助教辛苦了:-D内容六:参考文献1nachos中文教程2/link?url=dAr-aQbEqxMa5LxIThF_TJIt8_QMtNFqTbePYaPWycL9qewQMFBBf1i0r0EA6h4bVPHDBDv9lgBqjlqLWvWgrdbr3xCTdkH3Y09b2gOJFFSNachOS实验报告(4个全)3/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- cad技术与实践考试试题及答案
- 交通银行2025鸡西市秋招笔试EPI能力测试题专练及答案
- 农业银行2025七台河市秋招群面案例总结模板
- 交通银行2025固原市金融科技岗笔试题及答案
- 农业银行2025枣庄市秋招无领导模拟题角色攻略
- 农业银行2025承德市结构化面试15问及话术
- 建设银行2025秋招笔试专业知识题专练及答案广西地区
- 建设银行2025长春市笔试英文行测高频题含答案
- 2025行业商业模式创新案例研究
- 农业银行2025淄博市金融科技岗笔试题及答案
- 2024年广西公需科目参考答案
- 2024-2025学年陕西省西安西工大附中高一(上)月考物理试卷(含答案)
- 港航实务 皮丹丹 教材精讲班课件 60-第2章-2.8.1-航道整治的方法
- 智鼎在线测评题库88题
- 电缆敷设施工方案及安全措施
- 三级电工职业技能等级认定理论考试复习题及答案
- 肾性贫血的诊治进展课件
- 八年级上册《生命 生态 安全》计划
- 《济南的冬天》课后习题参考答案
- DB23T 3773-2024 坡耕地玉米田套种毛叶苕子栽培技术规程
- 企业级IPv6网络改造及升级服务合同
评论
0/150
提交评论