- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北大操作系统nachos实习报告——第二部分文件系统实习
操作系统实习二(文件系统)马亮 1001210767目录内容一:总体概述3内容二:任务完成情况3任务完成列表(Y/N)3具体Exercise的完成情况3内容三:遇到的困难以及解决方法31内容四:收获及感想31内容五:对课程的意见和建议31内容六:参考文献31内容一:总体概述通过本次实习,搞清了Nachos中文件系统的实现原理,通过文件模拟磁盘,通过bitmap记录扇区使用情况,通过filehdr记录文件信息,通过directory记录文件目录项信息等。理解了Nachos虚拟机运行用户态程序的原理和模拟系统调用的原理,通过machine类模拟寄存器控制指令执行,通过addrspace类模拟用户程序的内存空间,通过exception类模拟系统调用。并且本次实习过程中遇到大量错误,在解决错误的过程中进一步学习巩固了C++。内容二:任务完成情况任务完成列表(Y/N)Exercise1Exercise2Exercise3Exercise4Exercise5Exercise6第一周YYYYY第二周YY第三周YY第四周NNN具体Exercise的完成情况第一周Exercise1 源代码阅读filehdr.h和filehdr.cc阅读这两个文件定义了Nachos中的文件头,或称文件控制块。给出了一个文件除了文件名外的其他所有属性(文件名属性在目录中给出,并且和文件头有一一对应关系)。在Nachos中,一个扇区的大小为128Byte,每个文件头占一个扇区,由于numBytes和numSectors两个整形变量占去了8个字节,故剩余可用的dataSectors直接索引数量为((SectorSize - (2) * sizeof(int)) / sizeof(int)) = 30个。filesys.h和filesys.cc阅读在Nachos中,实现了两套文件系统:FILESYS_STUB和Nachos原生文件系统。在filesys.h中可看到两套系统的接口是一样的。对于FILESYS_STUB,它是建立在Linux文件系统基础上的,直接使用了Linux的系统调用完成相关功能,可保证结果的正确性,修改测试其他模块时,如果要使用到文件系统,可在makefile文件中增加FILESYS_STUB的定义,可以保证文件系统的正确性。在filesys.cc中初始化了空闲位图(bitmap)和目录文件的filehdr,并且在bitmap的0号和1号位置记录这两个filehdr所在的sector。Create方法创建一个固定大小的文件、Open方法打开一个已有的文件、Remove方法删除一个已有的文件。directory.h和directory.cc阅读Nachos现有的目录结构非常简单,只有根目录一级目录,并且只能存放10个目录项(见filesys.cc中的NumDirEntries定义),其中DirectoryEntry类是具体的目录项类,存放了inUse(记录文件或目录是否在使用),sector(记录了此目录项文件头所在的扇区),以及name(目录项名),长度默认为9(其实为10,但是最后一位要留给”/0”结束符)。openfile.h和openfile.cc阅读这两个文件定义了一个打开文件的数据结构,打开一个文件时产生一个OpenFile的文件结构,对文件的操作都可以通过这个结构来进行。针对filesys中的两套实现方案,这里也有对应的两套方案。ReadAt将从position开始的numBytes字节读入into缓冲,返回实际读取的字节数。WriteAt将from缓冲中的numBytes字节从position位置开始写入文件,返回实际写入的字节数。bitmap.h和bitmap.cc阅读在Nachos的文件系统中,是通过位图来管理空闲扇区的。Nachos默认允许存在32*32=1024个扇区,故可使用1024位来存储扇区的使用情况,如第十位为1,代表第十个扇区已被使用。因为一个扇区为128字节,故位图文件可存储在一个扇区上。发现由于makefile文件定义了DTHREADS而导致的BUG在实习开始阶段,试验文件系统的-D –t等参数,发现不能获得预期输出,倍感迷惑,通过调试main.cc中参数初始化的部分,发现程序运行到#ifdef Threads中后,将argc和argv的值改变了,如下图而后运行到下面的这个循环时,由于条件不满足而直接跳过了运行将filesys目录下的makefile文件中定义的-DTHREADS去除,重新编译整个项目,如下所示,则程序可正常运行为了避免其他模块也出现定义了THREADS就导致参数失效类似的问题,更合理的解决方法是修改程序为,在#ifdef THREADS代码块的前后加入对argc、argv的复制和写回代码。Exerc
您可能关注的文档
最近下载
- (新统编版)语文六年级下册 第一单元 大单元教学 课件(共7课时).pptx
- 皮肤管理前期筹备方案.docx
- 2025年中国绞股蓝行业市场调研及未来发展趋势预测报告.docx
- 2021中考语文真题分类汇编(现代诗文阅读)-记叙文阅读-记叙文阅读综合(含答案,共55题).docx VIP
- 中国吞噬世界-中国的,而不是人工智能的,斯普特尼克时刻.pdf
- 【备战2020年中考真题专题系列】2019年中考语文真题分类汇编(一)记叙文阅读.docx VIP
- 六西格玛黄带认证考试练习题及答案.doc VIP
- 2014年中考语文真题分类汇编 记叙文阅读.doc VIP
- FANUC_Series_0i-MD数控铣床面板操作与对刀.docx VIP
- 中考语文真题分类汇编:记叙文阅读.docx VIP
文档评论(0)