其他分享
首页 > 其他分享> > Nachos操作系统实验四:基本文件系统扩展

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