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()方法的具体实现,同时在构造方法里面添加headSector的初始化。
修改情况:
在这里插入图片描述在这里插入图片描述

4,在测试文件中按照要求删去注释。

修改情况:根据实验指导书要求,在fstest.cc文件的Append()方法和NAppend()方法中删去openFile->WriteBack()的注释。
在Append中:
在这里插入图片描述
在NAppend中:注意把openFile改为openFileTo

在这里插入图片描述

5,编译,查看结果。

太长了,我就不截了。
三次操作 cp,ap,hap。
其中ap后small是在最后,hap后在中间和最后会出现small。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值