操作系统 实验十 简单文件系统的实现

今日作业:
在这里插入图片描述
在这里插入图片描述
参考教程:https://www.write-bug.com/article/1714.html

实验原理

  • 在内存中开辟一个虚拟磁盘空间作为文件存储分区,在其上实现一个简单的基于多级目录的单用户单任务系统中的文件系统。在推出该文件系统的使用时,应将虚拟磁盘上的内容以一个文件的方式保存到磁盘上,一遍下次可以将它恢复到内存的虚拟磁盘中
  • 文件物理结构可采用显式链接或其他结构
    空闲磁盘空间的管理可选择FAT表、位示图或其他办法
    文件目录结构采用多级目录结构。为简单起见,可以不使用索引结点,每个目录项应包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护

要求提供以下有关操作:

format:对文件存储器进行格式化,即按照文件系统 的结构对虚拟磁盘空间进行布局, 并在其上创建根目录以及用于管理文件存储空间等的数据结构。
mkdir:用于创建子目录 rmdir:用于删除子目录 ls:用于显示目录 cd:用于更改当前目录
create:用于创建文件
open:用于打开文件
close:用于关闭文件
write:用于写文件
read:用于读文件
rm:用于删除文件

实验内容

format操作:格式化磁盘
在这里插入图片描述
ls操作:列出目录下的所有文件(需要先判断当前路径是否是目录)
在这里插入图片描述
mkdir操作:创建文件夹
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
rmdir操作:删除文件夹
在这里插入图片描述
在这里插入图片描述
create操作:创建文件
在这里插入图片描述
rm操作:删除文件夹
在这里插入图片描述
open操作:打开文件
在这里插入图片描述
cd操作:进入新目录
在这里插入图片描述
close操作:关闭文件
在这里插入图片描述
read操作:读文件
在这里插入图片描述
write操作:写文件
在这里插入图片描述

运行结果

  • mkdir创建文件夹
    输入mkdir virtual,创建文件夹virtual,
    输入ls查看是否创建成功
    在这里插入图片描述
  • create创建文件
    先输入cd virtual进入virtual文件夹下,然后输入ls查看目录,再输入create t.txt,最后输入ls查看是否创建成功。
    在这里插入图片描述
  • open打开文件
    输入open t.txt进入t.txt文件中
    在这里插入图片描述
  • write写入文件
    输入write进行写入操作,再输入1,1表示截断写,清空全部内容,从头开始写,2表示覆盖写,从文件指针处开始写,3表示追加写,再输入文字内容qqqqqqqq,并以$$结尾,表示写入结束。
    在这里插入图片描述
  • read读取文件
    输入read进行读取文件,显示出之前写的qqqqqqqqq
    在这里插入图片描述
  • close关闭文件
    输入close关闭文件,回到virtual文件夹下。
    在这里插入图片描述
  • exit退出文件系统
    输入exit退出文件系统。
    在这里插入图片描述

实验心得

FAT文件系统的每一个文件和文件夹都被分配到一个目录项,目录项中记录着文件名、大小、文件内容起始地址以及一些其他元数据(简单来说就是文件或文件夹本身的属性)。(具体存储格式可以百度或者Google)跟在目录项之后的是文件或文件夹的具体内容。
目录项都有规定好的固定长度以及每个位置代表的含义。

通过此次实验对构建简单的文件系统有了更深入的认识,因为是网上找的代码跟着写的,所以编译过程中有很多的错,也换了很多个教程,大概是因为期末周就很急功近利。最后静下心来去仔细地读代码,一点点去改编译过程中报的错,最后编译成功运行出结果,也很有成就感,真不错。

附完整代码及运行过程

链接:https://pan.baidu.com/s/1cCgh1-YLozEDKrtry6_n5A
提取码:oxx3
把代码下载到Ubuntu虚拟机中,并运行./a.out就可以进入文件系统。./a.out就是init.c的编译结果。
在这里插入图片描述


为什么从word里复制图片每一张图都结了厚厚的电子包浆?????气鼠。另外刘老师的表好好看!

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页