nachos Lab7实习报告
北大操作系统高级课程-陈向群作业-虚拟内存管理实习报告

虚拟内存管理实习报告目录内容一:总体概述 (3)内容二:任务完成情况 (3)任务完成列表(Y/N) (3)具体Exercise的完成情况 (3)内容三:遇到的困难以及解决方法 (11)内容四:收获及感想 (11)内容五:对课程的意见和建议 (11)内容六:参考文献 (11)内容一:总体概述本次lab主要是针对操作系统内存管理的学习,内存管理主要有固定分区、可变分区、页式和段式管理。
现代操作系统主要采用页式内存管理,它把用户程序地址空间划分成大小相等的部分,称为页。
内存空间按页的大小划分为大小相等的区域,称为内存块(物理页面,页框,页帧)。
以页为单位进行分配,逻辑上相邻的页,物理上不一定相邻。
虚拟内存的基本思想:每个程序拥有自己的地址空间,这个空间被分割成多个块,每一块称作一页或者页面,每一页有连续的地址范围。
这些页被映射到物理内存,但并不是所有页都必须在内存中才能运行。
当程序引用到一部分在物理内存中的地址空间时,由硬件立即执行必要的映射。
当程序引导到一部分不在物理内存中德的地址空间时,由操作系统负责将缺失的部分装入屋里内存并重新执行失效的指令。
内容二:任务完成情况任务完成列表(Y/N)Exercise1 Exercise2 Exercise3 Exercise4 Exercise5 Exercise6 Exercise7 Challange 完成情况Y Y Y Y Y Y N N具体Exercise的完成情况一、TLB异常处理目前,Nachos系统对于内存的管理是基于软件模拟的TLB机制。
其工作原理、异常处理、替换算法等方面,与分页式内存管理非常相像。
Exercise 1 源代码阅读Ø阅读code/userprog/,着重理解nachos执行用户程序的过程,以及该过程中与内存管理相关的要点。
Ø阅读code/machine目录下的machine.h(cc),translate.h(cc)文件和code/userprog目录下的exception.h(cc),理解当前Nachos系统所采用的TLB机制和地址转换机制。
Nachos文件系统实习报告

THANK YOU
感谢观看
实习目的
01 掌握Nachos文件系统的基本原理和架构。
02 了解文件系统的数据结构、存储管理、I/O 操作等核心组件。
03
通过实践操作,提高解决实际问题的能力 。
04
培养对文件系统领域的兴趣,为未来的学 习和工作打下基础。
02
Nachos文件系统概述
Nachos文件系统简介
01
Nachos文件系统是一种分布式文件系统,旨在为大
灵活性
支持多种存储介质和存储架构,可根据实际 需求进行配置和扩展。
易用性
提供友好的用户界面和丰富的API接口,方 便用户进行开发和集成。
Nachos文件系统的应用场景
科学计算
适用于气象、生物信息学、物理模拟等领域,提供大规模数据存储和处理能力。
云计算
作为云平台的底层存储基础设施,为虚拟机和容器提供文件存储服务。
Nachos文件系统 实习报告
汇报人: 202X-01-07
目 录
• 引言 • Nachos文件系统概述 • 实习内容与过程 • 实习成果与收获 • 总结与展望
01
引言
实习背景
• 在当今信息时代,文件系统作为 计算机存储和管理数据的关键组 件,其重要性不言而喻。 Nachos是一款模拟真实文件系 统的开源软件,为学习和研究文 件系统提供了良好的实验平台。 本次实习旨在通过实践Nachos 文件系统,深入了解文件系统的 基本原理、实现机制以及性能优 化等方面的知识。
第七次实验报告

第七次实验报告在科学的探索之路上,实验是我们获取真理、验证假设的重要手段。
每一次实验都像是一场未知的冒险,充满了挑战与惊喜。
而这第七次实验,更是给我留下了深刻的印象。
这次实验的主题是关于物质的化学反应速率。
实验的目的是探究不同因素对化学反应速率的影响,并通过精确的测量和观察,得出具有科学性和可靠性的结论。
实验开始前,我们进行了充分的准备工作。
首先,对实验所需的仪器和药品进行了仔细的检查和清点,确保没有遗漏和损坏。
我们这次用到的仪器有容量瓶、量筒、温度计、秒表、玻璃棒等等,而药品则包括了常见的化学试剂,如盐酸、氢氧化钠溶液等。
实验过程中,我们设计了多组对比实验。
第一组是改变反应物的浓度,通过控制加入的试剂的量,来观察反应速率的变化。
第二组是改变反应的温度,利用恒温槽将反应体系分别设置在不同的温度条件下,记录反应完成所需的时间。
第三组则是加入催化剂,观察其对反应速率的加速效果。
在改变反应物浓度的实验中,我们发现,随着反应物浓度的增加,反应速率明显加快。
以盐酸和氢氧化钠的中和反应为例,当盐酸的浓度增大时,与相同量的氢氧化钠反应的速度显著提升,溶液的温度升高也更为迅速,这表明反应放出的热量更多,反应进行得更剧烈。
而在改变温度的实验中,结果更是一目了然。
温度升高,分子的运动速度加快,有效碰撞的几率增加,从而大大提高了反应速率。
当我们将反应体系的温度从室温提升到 50 摄氏度时,原本需要几分钟才能完成的反应,在几十秒内就接近完成。
在加入催化剂的实验里,催化剂的神奇作用让我们惊叹不已。
它就像是化学反应中的“助推器”,能够显著降低反应的活化能,使反应能够在更温和的条件下快速进行。
然而,实验并非一帆风顺。
在操作过程中,我们也遇到了一些问题。
比如,在测量反应时间时,由于秒表的操作不够熟练,导致记录的数据出现了一些误差。
还有在配置溶液的过程中,因为对量具的读数不准确,使得溶液的浓度与预期有所偏差。
但这些问题并没有让我们气馁,反而激发了我们更加严谨和认真的态度。
Nachos同步机制实习报告

Nachos同步机制实习报告同步机制实习报告善良的大姐姐 2021.3.30目录一:总体概述 ........................................................................... ........ 3 二:任务完成情况 ............................................................................3 任务完成列表(Y/N) ................................................................ 3 具体Exercise的完成情况 ........................................................... 3 三:遇到的困难以及解决方法 ...................................................... 12 四:收获及感想 ........................................................................... .. 12 内容五:参考文献 (13)2一:总体概述Lab3首先要求阅读Nachos系统提供的同步机制代码,即Semaphore的实现。
其次要求修改底层源代码,达到“扩展同步机制,实现同步互斥实例”的目标。
具体来说,即要求在Semaphore的基础上,实现Lock锁和Mesa管程的Condition(条件变量)。
此外,还要利用编写的同步机制,来实现互斥实例,进而证明同步机制编写的正确性。
二:任务完成情况任务完成列表(Y/N)Exercise1 Yes Exercise2 Yes Exercise3 Yes Exercise4 Yes Challenge1 Yes Challenge2 Yes 具体Exercise的完成情况Exercise1:调研任务:调研Linux中实现的同步机制调研情况:Linux的同步机制包括好几层。
液相检测实习报告

液相检测实习报告一、实习背景及目的随着科技的发展和产业的升级,液相检测技术在众多领域发挥着越来越重要的作用。
为了提高自己在液相检测方面的理论知识和实践技能,我参加了本次液相检测实习。
本次实习的主要目的是了解液相检测的基本原理、熟悉液相检测设备的使用和操作、掌握液相检测数据的处理方法,以及培养自己的实验操作能力和团队协作精神。
二、实习内容与过程1. 实习前的准备在实习开始前,指导老师为我们讲解了液相检测的基本原理、实验流程和注意事项。
我们了解到,液相检测主要是通过样品溶液在色谱柱中的分离,再通过检测器检测分离后的组分,从而实现对样品成分的分析。
同时,我们还学习了液相检测器的基本类型及其工作原理,如紫外检测器、二极管阵列检测器、质谱检测器等。
2. 实习过程(1)样品处理在实验开始前,我们需要对样品进行处理。
根据实验要求,我们选择了适当的溶剂将样品溶解,并过滤去除杂质。
此外,为了提高检测灵敏度,我们还对样品进行了稀释处理。
(2)色谱柱的选择与安装根据实验要求,我们选择了合适的色谱柱。
色谱柱是液相检测中的关键部件,其选择和安装直接影响到实验结果的准确性。
在指导老师的帮助下,我们正确安装了色谱柱,并进行了柱效验证,确保色谱柱的使用效果。
(3)流动相的配制流动相是液相检测中的另一个关键因素。
我们根据实验要求和样品性质,选择了合适的流动相,并按照比例配制了混合溶剂。
在配制过程中,我们严格控制溶剂的质量和比例,以保证实验结果的准确性。
(4)实验操作在实验操作过程中,我们遵循了液相检测的标准操作程序。
首先,将样品溶液注入进样器,然后启动液相检测仪,调整检测器的参数,使基线稳定。
待仪器运行稳定后,启动数据处理软件,记录峰面积和保留时间等参数。
在实验过程中,我们密切关注仪器运行情况,及时处理可能出现的问题。
(5)数据处理与分析实验完成后,我们需要对采集到的数据进行处理和分析。
我们使用数据处理软件对峰面积、保留时间等进行计算和统计,并根据标准曲线求出样品中各成分的含量。
nachosLab实习报告

系统调用实习报告目录内容一:总体概述 (2)内容二:任务完成情况 (2)任务完成列表(Y/N) (2)具体Exercise得完成情况 (2)内容三:遇到得困难以及解决方法 (14)内容四:收获及感想 (15)内容五:对课程得意见与建议 (15)内容六:参考文献 (15)内容一:总体概述本次lab得主要内容就是实现nachos定义得系统调用。
理论方面,我们需要了解nachos系统调用得实现原理,实践方面,我们需要实现文进系统相关系统调用与用户程序相关系统调用,并且编写用户程序验证相关系统调用得正确性。
内容二:任务完成情况任务完成列表(Y/N)具体Exercise得完成情况一、理解Nachos系统调用Exercise 1 源代码阅读阅读与系统调用相关得源代码,理解系统调用得实现原理。
code/userprog/syscall、hcode/userprog/exception、cccode/test/start、suserprog/syscall、h定义nachos得系统调用,主要包括系统调用号与系统调用函数,内核通过识别用户程序传递得系统调用号确定系统调用类型已经实现得系统调用包括void Halt();关闭nachos虚拟机,打印性能统计信息需要实现得系统调用包括:3种系统调用涉及地址空间:1)、void Exit(int 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);3)打开文件名name得Nachos文件,返回打开文件标志符OpenFileId实际就是整形,标识打开文件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)());创建与当前线程拥有相同地址空间得线程,运行func指针指向得函数2)、void Yield();当前线程让出CPUcode/userprog/exception、cc定义进行异常处理得ExceptionHandler函数,主要流程就是根据异常信息处理不同异常,包括系统调用目前支持得异常:NoException, // 正常SyscallException, // 系统调用PageFaultException, // 缺页(页表/快表)ReadOnlyException, // 访问只读页面BusErrorException, // 总线错误AddressErrorException, // 访问地址对齐错误/超出范围OverflowException, // 算数溢出IllegalInstrException, // 非法指令NumExceptionTypes处理系统调用时,需要从2号寄存器获得系统调用号确定系统调用类型code/test/start、s就是辅助用户程序运行得汇编代码,主要包括初始化用户程序与系统调用相关操作(1)初始化用户程序:通过调用main函数运行用户程序、globl __start、ent __start__start:jal main //跳转到main函数执行用户程序move $4,$0 //main函数返回//r4寄存器存入0,作为下面调用Exit参数jal Exit、end __start(2)系统调用:用户程序执行系统调用时,将系统调用号存入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)OneInstruction函数判断当前指令就是系统调用,转入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 2 系统调用实现类比Halt得实现,完成与文件系统相关得系统调用:Create, Open,Close,Write,Read。
Nachos系统调用实习报告

Nachos系统调用实习报告在本次实习中,我参与了Nachos系统的开发与优化工作。
Nachos是一款开源的嵌入式操作系统,旨在提供安全、高效和可靠的计算环境。
通过实习,我希望能够更深入地理解操作系统的内部机制,提升我的系统编程技能,并且在实际项目中运用所学知识。
在进行系统调用设计时,遇到了参数传递的问题。
经过研究,我们决定采用寄存器传递参数,并优化了寄存器的使用方式,提高了调用效率。
在实现文件系统时,遇到了读写性能的问题。
我们通过对文件系统进行优化,包括缓存机制、文件分割等手段,有效地提高了读写性能。
在多任务调度中,遇到了任务优先级冲突的问题。
我们通过引入任务调度器,实现了任务的动态优先级调整,解决了冲突问题。
团队合作:在实习期间,我与团队成员积极沟通,共同解决了许多问题。
我们经常进行技术讨论,分享解决方案,共同优化系统性能。
这种团队合作的方式让我收获颇丰。
在实习过程中,我运用了所学的操作系统知识,如进程管理、文件系统、设备驱动等,对Nachos系统进行优化。
同时,我还学习了汇编语言、C语言以及嵌入式开发的相关知识,并将其应用到实际项目中。
这些知识的应用让我对操作系统有了更深入的理解。
通过实习,我更加深入地理解了操作系统的内部机制和实现方法。
我学会了如何在实际项目中运用所学知识,提高了我的系统编程技能。
我认识到团队合作的重要性,学会了如何与他人协作解决问题。
我认识到自我学习和持续进步的重要性,需要在工作中不断学习和提升。
对某些专业知识掌握不够深入,需要进一步学习。
在解决问题时,有时过于急躁,需要更加耐心地思考和分析问题。
通过本次实习,我更加深入地理解了操作系统的内部机制和实现方法,提高了我的系统编程技能和解决问题的能力。
我也认识到团队合作的重要性,学会了如何与他人协作解决问题。
这些经验和收获将对我未来的学习和工作产生积极的影响。
在过去的六个月中,我有幸在XYZ科技公司的Nachos团队实习,专注于文件系统的开发与优化。
nachos 实验报告

nachos 实验报告
《Nachos 实验报告》
在计算机科学领域,操作系统是一个非常重要的概念。
它是计算机系统的核心组成部分,负责管理计算机的资源并提供用户和应用程序之间的接口。
为了更好地理解操作系统的工作原理,我们进行了一项名为Nachos的实验。
Nachos是一个用于教学目的的操作系统内核。
它是在加州大学伯克利分校开发的,旨在帮助学生学习操作系统的基本概念和原理。
在这个实验中,我们使用Nachos来深入了解操作系统的各个方面,包括进程管理、内存管理、文件系统和网络通信等。
首先,我们学习了Nachos的基本结构和架构。
它由多个模块组成,每个模块负责不同的功能。
通过阅读Nachos的源代码和文档,我们逐渐理解了操作系统内核的组成和工作原理。
接着,我们进行了一系列的实验,来探索Nachos的各种功能。
我们实现了进程管理模块,通过创建和调度多个进程来理解进程的概念和调度算法。
我们还实现了内存管理模块,通过分配和释放内存来了解内存管理的重要性。
此外,我们还实现了文件系统和网络通信模块,以便更好地理解操作系统对外部设备和网络的支持。
通过这些实验,我们不仅加深了对操作系统的理解,还提高了编程和调试的能力。
Nachos实验让我们从理论知识转化为实际操作,让我们更加深入地理解了操作系统的工作原理。
总的来说,Nachos实验为我们提供了一个宝贵的学习机会,让我们对操作系统有了更深入的了解。
通过这个实验,我们不仅学到了知识,还培养了解决问题
的能力和团队合作精神。
希望未来能够继续深入研究操作系统,为计算机科学领域做出更多的贡献。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
shell实现实习报告页脚内容1目录内容一:总体概述 (3)内容二:任务完成情况 (3)任务完成列表(Y/N) (3)具体Exercise的完成情况 (4)内容三:遇到的困难以及解决方法 (19)内容四:收获及感想 (20)内容五:对课程的意见和建议 (20)内容六:参考文献 (20)页脚内容2内容一:总体概述本次实习需要实现用户程序shell。
shell是提供使用者使用界面的软件(命令解析器),他接收用户命令,然后调用相应的应用程序。
本次shell实现的基础是前面已经完成的相关功能。
注意到nachos已经实现简单的shell,我们只需要在此基础上进行相关的修改。
内容二:任务完成情况任务完成列表(Y/N)页脚内容3具体Exercise的完成情况设计实现一个用户程序shell,通过./nachos -x shell进入用户交互界面中。
在该界面中可以查询支持的功能、可以创建删除文件或目录、可以执行另一个用户程序并输出运行结果,类似Linux上跑的bash。
你实现的越完善,碰到的问题越多,学到的也会越多。
本实验所修改的代码包括内核和用户程序两部分。
首先,需要解析输入的命令,这部分现有程序已经完成Write(prompt, 2, output);Read(&buffer[i], 1, input);因为在Lab6中,我没有考虑标准输入和标准输出的问题,所以需要修改处理read系统调用和处理write系统调用的部分针对处理read系统调用的部分,如果系统调用的第3个参数是0(表示标准输入),那么读取从用户界面输入的字符串存入相应的位置if(fd == 0){for (int i = 0; i < count; i++)content[i] = getchar();}针对处理write系统调用的部分,如果系统调用的第3个参数是1(表示标准输出),那么输出缓冲区页脚内容4字符串到用户界面if(fd == 1) {for(int i = 0; i < count; i++)putchar(content[i]);}执行./nachos -x ../test/shell,shell启动然后,确定需要实现的命令功能命令使用方法执行用户程序x x 用户程序显示当前路径pwd pwd页脚内容5部分指令的实现依赖已经实现的系统调用,部分指令的实现需要新的系统调用,添加系统调用的流程(1)syscall.h中定义系统调用接口、系统调用号;(2)start.s中添加链接代码;(3)中增加系统调用的处理过程.执行用户程序x基本思路是通过已经实现的系统调用Exec执行用户程序,通过已经实现的系统调用Join等待用户程序页脚内容6执行结束shell.cif (buffer[0] == 'x' && buffer[1] == ' ') {newProc = Exec(buffer + 2);Join(newProc);}测试结果如下,用户程序正常执行显示当前路径pwd页脚内容7基本思路是添加系统调用Pwd,基于C函数system实现显示当前路径syscall.h#define SC_Pwd 11void Pwd();start.sPwd:addiu $2,$0,SC_Pwdsyscallj $31.end Pwdshell.cif (buffer[0] == 'p' && buffer[1] == 'w' && buffer[2] == 'd'&& buffer[3] == '\0')Pwd();页脚内容8列出当前目录ls基本思路是添加系统调用Ls,基于C函数system实现显示当前路径syscall.h#define SC_Ls 12void Ls();start.sLs:addiu $2,$0,SC_Lssyscallj $31.end Lsshell.cif (buffer[0] == 'l' && buffer[1] == 's' && buffer[2] == '\0')页脚内容9Ls();显示当期路径,列出当前目录,结果符合实际切换当前路径cd基本思路是添加系统调用Cd,基于C函数chdir实现切换当前路径syscall.h#define SC_Cd 13void Cd(char* name);start.sCd:addiu $2,$0,SC_Cdsyscallj $31.end Cd页脚内容10shell.cif (buffer[0] == 'c' && buffer[1] == 'd'&& buffer[2] == ' ')Cd(buffer + 3);首先切换到上级目录(..),然后切换到目录test,结果符合实际创建文件nf基本思路是通过已经实现的系统调用Create创建文件页脚内容11shell.cif (buffer[0] == 'n' && buffer[1] == 'f'&& buffer[2] == ' ')Create(buffer + 3);删除文件df基本思路是添加系统调用Remove,基于已经实现的Remove函数实现文件的删除,删除文件时使用添加的系统调用Removesyscall.h#define SC_Remove 14void Remove(char* name);start.sRemove:addiu $2,$0,SC_Removesyscallj $31.end Remove页脚内容12shell.cif (buffer[0] == 'd' && buffer[1] == 'f'&& buffer[2] == ' ')Remove(buffer + 3);在文件夹Lab7创建删除部分文件,结果符合实际创建文件夹nd基本思路是添加系统调用CreateDir,基于C函数mkdir实现文件夹的建立syscall.h页脚内容13#define SC_CreateDir 15void CreateDir(char* name);start.sCreateDir:addiu $2,$0,SC_CreateDirsyscallj $31.end CreateDirshell.cif (buffer[0] == 'n' && buffer[1] == 'd'&& buffer[2] == ' ')页脚内容14CreateDir(buffer + 3);删除文件夹dd基本思路是添加系统调用RemoveDir,基与C函数rmdir实现文件夹的删除syscall.h#define SC_RemoveDir 16void RemoveDir(char* name);start.sRemoveDir:addiu $2,$0,SC_RemoveDirsyscallj $31.end RemoveDir页脚内容15shell.cif (buffer[0] == 'd' && buffer[1] == 'd'&& buffer[2] == ' ')RemoveDir(buffer + 3);在文件夹Lab7创建删除部分文件和文件夹,结果符合实际需要说明的是,如果使用C函数remove,可以利用统一的命令实现文件的删除和文件夹的删除,并且页脚内容16文件夹的删除是递归的。
显示帮助信息h基本思路是添加系统调用Help,显示帮助信息syscall.h#define SC_Help 17void Help();start.sHelp:addiu $2,$0,SC_Helpsyscallj $31.end Help页脚内容17shell.cif (buffer[0] == 'h' && buffer[1] == '\0')Help();退出q基本思路是通过已经实现的系统调用Exit退出shell shell.c页脚内容18if (buffer[0] == 'q' && buffer[1] == '\0')Exit(0);测试结果如下,shell正常退出内容三:遇到的困难以及解决方法困难:通过C程序与Linux系统交互我选择使用Linux文件系统完成实习,nachos已经实现的相关函数相对有限,其中文件/文件夹的建立和删除以及相关信息的查询实际上可以通过C的相关函数完成,当然,我们也可以使用nachos的文件系统完成实习,在这样的情况下,我们主要依靠Lab5文件系统实习和Lab6系统调用实习实现的相关函数页脚内容19内容四:收获及感想前面的实习顺利完成并且深入理解后,本次实习并不是特别困难,只需要实现shell用户程序并且添加部分系统调用即可内容五:对课程的意见和建议我觉得课程形式好,互动强,使我受益匪浅。
我觉得课程形式好,互动强,使我受益匪浅。
助教认真负责,知识充分,为课程付出很多,助教辛苦了:-D内容六:参考文献[1]nachos中文教程[2]/link?url=dAr-aQbEqxMa5LxIThF_TJIt8_QMtNFqTbePYaPWycL9qewQMFBBf1i0r0EA6h4b VPHDBDv9lgBqjlqLWvWgrdbr3xCTdkH3Y09b2gOJFFSNachOS实验报告(4个全)[3]/link?url=E-bRsoJhMhEwKZaXkXZmYL1j1BIeDq0d8JZ9Rf0GvZt9jQdC8SFoiR1-B0d8tGylBv ixFzbodT9kp88zL0eXK1okPZjPjAwbkEGDiwPi7ruNachos的shell实现[4]/download/runzhi1989/2176266Nachos实验代码页脚内容20。