- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 课题研究组内分工.docx VIP
- 门面房改棋牌室租房合同7篇.docx
- 广东省珠海市香洲区珠海市2025年九年级上学期月考数学试题附答案.docx VIP
- 中国近十年宏观经济政策的得与失.docx VIP
- 2024语文九年级上册《第五单元》大单元教学设计.docx VIP
- 普通高中化学课程标准(2017年版2020年修订).pdf VIP
- HP Color LaserJet Pro M154 打印机快速说明书.pdf VIP
- 《相似三角形的判定与性质复习课》PPT.ppt VIP
- HP Color LaserJet Pro M154 打印机设置说明书.pdf VIP
- 银行数字化运营知识测试试卷及答案解析.doc
文档评论(0)