Nachos实验10设计并实现具有二级索引的文件系统.docxVIP

Nachos实验10设计并实现具有二级索引的文件系统.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验目的 Nachos系统原冇的文件系统只支持单级索引,最大能存取NumDirect* SectorSize的大小的文件,木次试 验的目的: 理解文件系统的组织结构 扩展原有的文件系统,设计并实现具有二级索引的文件系统。 实验环境 linux操作系统,Nachos操作系统 实验分析 己知在文件头的定义中描述了: #define NumDirect ((SectorSize - 2 * sizeof(int)) / sizeof(int)) 为了说明方便,经过实际计算,NumDirect = 30. 二级索引的文件系统的filehdr 首先,通过观察Nachos原冇的filehdr (即上图左边的部分),可知Nachos的单级索引的文件系统最大 只支持存取29个扇区大小的文件。为了扩展二级索引,取数组的故后一个dataSectors[29]作为存取新的 dataSectors 数纽.块的索引,定义 dataSectors[0] - dataSectors[28]7?取数据所在的块号,dataSectors[29] ==-1表示无二级索引块,为正值表示二级索引dataSectors2所在的索引块。当文件超过原dataSectors 数组所能能够存取的人小28的时候,通过bitmap为文件头的dataSectors2分配空间,返回的Sector号 存在 dataSectors[29]中。 fileSys每次读取filehdr的时候,仍然只读取原filehdr,如果想耍访问和修改dataSectors2中的内容,则 在filehdr中先通过dataSectors[29]获取到dataSectors2的扇区号,通过调用synchDisk - ReadSector(dataSectors[lastlndex], (char *)dataSectors2),读入 dataSectors2 的内容,然后再进行 dataSectors数组29-62号所对应的数据块的读取。 因为木次实验是在实验5的基础上进行更改的,即支持文件的扩展,这就耍求不仅耍冇读取dataSectors2 数组的方法,还耍可以重新写入dataSectors2的方法。实现方法也就是首先如果需耍访问dataSectors2, 那么首先调用 synchDisk - ReadSector (dataSectorsflastlndex], (char *)dataSectors2),读入 dataSectors2的内容,然后进行各种应用程序的读写操作,最后调用synchDisk - WriteSector (dataSectorsflastlndex), (char *)dataSectors2),将更改后的结果弓回。 由分析可知,文件系统的二级索引功能的扩展只针对filehdr,所有的修改的都只在filehdr.cc中进行,连头 文件filehdr.h也不涉及。 关键源代码及注释 filehdr.cc 在头文件中添加dataSectors2的人小定义: #define NumDirect2 (SectorSize / sizeof(int)) 更改 MaxFileSize: #define MaxFileSize ((NumDirect + NumDirect2)* SectorSize) 转向filehdr.cc进行说明,所冇畅数体中绿色部分均为木次实验的注释(建议看Allocate和Deallocate就 好了,其他的原理类似,appSectors涉及实验5的部分): // filehdr.cc 〃省略无数贵任声明 // // @LiZhe n 17/11/09 // // Extends the file system to double the max file size that // Nachos can store #inelude copyright.h” #inelude ”system.h” include filehdr.h Allocate // // FileHeader::Allocate // Initialize a fresh file header for a newly created file. // Allocate data blocks for the file out of the map of free disk blocks? // Retur n FALSE if there are not eno ugh free blocks to accomodate // the new file. // // HfreeMapH is the bit map of free disk sectors // “fileSize” i

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档