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

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

ID:49700408

大小:45.00 KB

页数:14页

时间:2020-03-03

Nachos 实验10 设计并实现具有二级索引的文件系统.doc_第1页
Nachos 实验10 设计并实现具有二级索引的文件系统.doc_第2页
Nachos 实验10 设计并实现具有二级索引的文件系统.doc_第3页
Nachos 实验10 设计并实现具有二级索引的文件系统.doc_第4页
Nachos 实验10 设计并实现具有二级索引的文件系统.doc_第5页
资源描述:

《Nachos 实验10 设计并实现具有二级索引的文件系统.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验目的Nachos系统原有的文件系统只支持单级索引,最大能存取NumDirect*SectorSize的大小的文件,本次试验的目的:理解文件系统的组织结构扩展原有的文件系统,设计并实现具有二级索引的文件系统。实验环境linux操作系统,Nachos操作系统实验分析已知在文件头的定义中描述了:#defineNumDirect((SectorSize-2*sizeof(int))/sizeof(int))为了说明方便,经过实际计算,NumDirect=30.二级索引的文件系统的filehdr首先,通过观察

2、Nachos原有的filehdr(即上图左边的部分),可知Nachos的单级索引的文件系统最大只支持存取29个扇区大小的文件。为了扩展二级索引,取数组的最后一个dataSectors[29]作为存取新的dataSectors数组块的索引,定义dataSectors[0]-dataSectors[28]存取数据所在的块号,dataSectors[29]==-1表示无二级索引块,为正值表示二级索引dataSectors2所在的索引块。当文件超过原dataSectors数组所能能够存取的大小28的时候,通过b

3、itmap为文件头的dataSectors2分配空间,返回的Sector号存在dataSectors[29]中。fileSys每次读取filehdr的时候,仍然只读取原filehdr,如果想要访问和修改dataSectors2中的内容,则在filehdr中先通过dataSectors[29]获取到dataSectors2的扇区号,通过调用synchDisk->ReadSector(dataSectors[lastIndex],(char*)dataSectors2),读入dataSectors2的内容,

4、然后再进行dataSectors数组29-62号所对应的数据块的读取。因为本次实验是在实验5的基础上进行更改的,即支持文件的扩展,这就要求不仅要有读取dataSectors2数组的方法,还要可以重新写入dataSectors2的方法。实现方法也就是首先如果需要访问dataSectors2,那么首先调用synchDisk->ReadSector(dataSectors[lastIndex],(char*)dataSectors2),读入dataSectors2的内容,然后进行各种应用程序的读写操作,最后调

5、用synchDisk->WriteSector(dataSectors[lastIndex],(char*)dataSectors2),将更改后的结果写回。由分析可知,文件系统的二级索引功能的扩展只针对filehdr,所有的修改的都只在filehdr.cc中进行,连头文件filehdr.h也不涉及。关键源代码及注释——filehdr.cc                                                                                    

6、                                                                                                               在头文件中添加dataSectors2的大小定义:#defineNumDirect2(SectorSize/sizeof(int))更改MaxFileSize:#defineMaxFileSize((NumDirect+NumDirect2)*SectorSize)转向filehdr.

7、cc进行说明,所有函数体中绿色部分均为本次实验的注释(建议看Allocate和Deallocate就好了,其他的原理类似,appSectors涉及实验5的部分)://filehdr.cc//省略无数责任声明////@LiZhen17/11/09////Extendsthefilesystemtodoublethemaxfilesizethat//Nachoscanstore#include"copyright.h"#include"system.h"#include"filehdr.h"Allocate

8、//----------------------------------------------------------------------//FileHeader::Allocate//Initializeafreshfileheaderforanewlycreatedfile.//Allocatedatablocksforthefileoutofthemapoffreediskblocks.//ReturnFALSEiftherea

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。