Nachos操作系统实验四:基本文件系统扩展
作者:互联网
Nachos操作系统实验四:基本文件系统扩展
注意
所有单独修改部分均在其后方注释add here
整体修改部分均在其上下注释add here
实验提供的makefile文件应该是支持在原代码上直接修改的,所以如果要移动代码到新的文件夹,请自行修改makefile文件。
实验目的
扩展Nachos的基本文件系统。Nachos的文件系统是一个简单并且能力有限的系统,限制之一就是文件的大小是不可扩展的。通过扩展,使得文件的大小是可变的。在扩展写入文件内容时,一边写入,一边动态调整文件的长度及所占用的数据扇区。
实验思路
本次实验修改在code/filesys中。修改部分为openfile和fileheader(filehdr),参考n4a的实现思路,在openfile类中添加WriteBack()方法,手动写回文件头,来实现文件长度的修改。
实验过程
1,查看源码得知最后文件修改都是在openfile类的WriteAt(),我们修改该方法实现长度拓展。
修改情况:注意,WriteAt()方法只修改了截图中的那一段代码。
2,我们先实现拓展方法一:ExtendSpace(BitMap* freeMap,int newSize)
(1)filehdr.h
修改情况:在public修饰符后增加了ExtendSpace()方法声明
(2)filehdr.cc
修改情况:ExtendSpace()方法的具体实现。
3,我们再实现拓展方法二:openfile类的WriteBack()
修改情况:openfile类的WriteBack()方法实际上是使用filehdr的WriteBack()方法,这就需要文件打开时(即openfile)保存文件头所在的扇区(文件头,即filehdr是占据一个扇区的,一个扇区是128字节,你可以去filehdr里看到其属性刚好是32个Int,也即128字节)。
(1)在openfile.h中添加headSector属性,用于存储文件的文件头所在的扇区。同时在openfile.h中添加WriteBack()方法,用于写回文件头。
修改情况:
(2)在openfile.cc中添加WriteBack()方法的具体实现。
修改情况:
4,在测试文件中按照要求删去注释。
修改情况:根据实验指导书要求,在fstest.cc文件的Append()方法和NAppend()方法中删去openFile->WriteBack()的注释。
在Append中:
在NAppend中:注意把openFile改为openFileTo
5,编译,查看结果。
太长了,我就不截了。
三次操作 cp,ap,hap。
其中ap后small是在最后,hap后在中间和最后会出现small。
标签:文件,openfile,操作系统,WriteBack,文件系统,filehdr,修改,Nachos,方法 来源: https://blog.csdn.net/m0_46422419/article/details/122016414