操作系统综合实验——文件系统

一、实验题目

        下面的练习检查了 UNIX 或 Linux 系统上文件和 inode 之间的关系。在这些系统上,文件用 inode 表示。也就是说,一个 inode 是一个文件(反之亦然)。可以在随本文提供的Linux虚拟机上完成此练习。也可以在任何 Linux、UNIX 或 Mac OS X 系统上完成练习,但需要创建两个名为 file1.txt 和 file3.txt 的简单文本文件,其内容是唯一的句子。

二、相关原理与知识

        将使用 UNIX 或 Linux 的文件系统,并且掌握一些基本的文件操作命令,如创建文件(touch)、查看文件内容(cat)等。需要Linux下文件系统以及C语言的相关知识。

        在Linux文件系统中,每个文件都由一个inode和数据块组成。inode存储文件的元数据,如所有者、访问权限、创建和修改时间等,而数据块则存储文件的实际内容。

三、实验过程

实现代码的主要设计思路:

        首先,创建两个名为file1.txt和file3.txt的简单文本文件,其内容是唯一的句子。使用echo命令来创建文件并写入内容。

echo "This is file 1." > file1.txt
  1. 打开file1.txt并且检查其内容,并且获取索引结点值
  2. 创建 file2.txt 与 file1.txt 的联系,查看索引、内容
  3. 修改 file2.txt,检查file1.txt是否被更改
  4. 删除file1.txt并且检查目录,file2.txt是否还在
  5. 执行 strace rm file2.txt
  6. 创建file3.txt,创建file3.txt和file4.txt软连接并查看索引
  7. 修改file4.txt的内容,并且检查发现file3.txt也被修改了
  8. 删除file3.txt检查发现file4.txt也被删除

四、实验结果与分析

1.先使用echo命令来创建文件并写入内容,并且查看file1.txt的内容和其inode的值。

2.创建 file2.txt 与 file1.txt 的联系,查看索引、内容

3.修改 file2.txt,检查file1.txt是否被更改

4.删除file1.txt并且检查目录发现file2.txt还在 

 5.执行 strace rm file2.txt

6.创建file3.txt,创建file3.txt和file4.txt软连接并查看索引

7.修改file4.txt的内容,并且检查发现file3.txt也被修改了

8.删除file3.txt检查发现file4.txt也被删除

五、问题总结

问题1:

        先在文件file2里写了内容,再建立连接,报错。建立连接时会直接创建一个新的文件。

总结:

        硬链接的修改操作:硬链接直接指向源文件的inode,因此对源文件的任何修改都会反映到硬链接上。这意味着,无论通过源文件还是其硬链接进行修改,所有链接到同一inode的文件内容都会同步更新。

        硬链接的删除操作:硬链接不会因为源文件的删除而消失。实际上,只要至少有一个硬链接存在,即使源文件被删除,文件的内容依然可以通过其他硬链接访问。这是因为硬链接和源文件共享相同的inode,只有当所有指向该inode的硬链接都被删除后,系统才会释放该inode及其对应的磁盘空间。

        软链接的修改操作:软链接或符号链接,并不直接指向源文件的inode,而是存储了源文件的路径名。因此,如果源文件被移动或重命名,软链接将无法找到目标文件。除非软链接被重新定向到新的路径,否则它会变得无效。

        软链接的删除操作:软链接会因为源文件的删除而失效。这是因为软链接仅包含源文件的路径信息,一旦源文件被删除,操作系统无法通过该路径找到文件,导致软链接失效。

六、源代码

cat file1.txt # 查看file1.txt的内容 
ls -i file1.txt # 获取file1.txt的inode值	

ln file1.txt file2.txt  # 创建硬链接
ls -i file1.txt file2.txt  # 查看两个文件的inode值
cat file2.txt  # 查看file2.txt的内容

echo "Modified content" >> file2.txt  # 修改file2.txt
cat file1.txt  # 查看file1.txt的内容是否被更改

rm file1.txt  # 删除file1.txt
ls  # 查看当前目录,file2.txt是否还在

strace rm file2.txt  # 使用strace跟踪rm命令

echo "This is file3.txt" > file3.txt  # 创建file3.txt
ln -s file3.txt file4.txt  # 创建file3.txt的软链接file4.txt
ls -i file3.txt file4.txt  # 查看两个文件的inode值

echo "Modified content for file4.txt" > file4.txt  # 修改file4.txt
cat file3.txt  # 查看file3.txt的内容是否被更改

rm file3.txt  # 删除file3.txt
ls  # 查看当前目录,file4.txt是否被删除

  • 19
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值