深大操作系统实验四:磁盘 Inode 读取,盘块读取,软硬链接,磁盘挂载

前言

最后一个实验了。。。

还有 xv6 综合实验二,寄!

上周打游戏去了,经典赶 ddl

在这里插入图片描述

用逆天鲨鱼头的话说就是:哇哇哇哇!!!!💃💃💃💃💃 上大分了 happy!

🍎+一下:这次实验挺简单的,除了第二题读盘块听变态的说实话,因为要自己看看 ext4 的 inode 组成,磁盘组的划分等知识点,其他的直接做就行了,然后最后的选做题直接嗯编

1. 目录树构建

1) 构建以下目录子树:(20%)
在这里插入图片描述

首先创建对应结构的目录,但是不进行链接:

在这里插入图片描述
通过 tree 查看目录结构:

在这里插入图片描述
然后使用 ln 命令创建链接,其中 g->e 是硬连接,b->f 是硬连接:

在这里插入图片描述

2. Inode 与物理盘块读取

(2)创建一个4KB左右的文本文件,其内容为重复出现的“Hello Operating
system”。
读入该文件的目录项内容,并解读出其对应的inode节点号;
然后读出对应的inode内容,找到文件的第一个扇区,
读入第一个盘块并查看其内容;
(30%)

创建对应要求的文本文件:

在这里插入图片描述
首先通过 df -i 命令查找 hello.txt 对应的目录,挂载在那个文件系统下,发现是 /dev/sda5,如图:

在这里插入图片描述
然后通过 df -T 查看 /dev/sda5 的文件系统类型为 ext4,如图:

在这里插入图片描述
然后再通过 dump2fs 命令查看 sda5 的格式化的文件系统信息:

在这里插入图片描述

信息的解释如下:

Inode size				:内核 Inode 结构体大小为 256 字节
Inodes per group		:每组内存放了 8192 个 Inode
Block size				:一个盘块大小为 4096 字节
Blocks per group		:每组内有 32768 个盘块
Inode blocks per group	:每组内存放了 Inode 的盘块的数量为 512

从逻辑上来看,每个盘块 4096 字节,能够存储 4096/256 = 16 个 Inode,而一个磁盘有 512 个盘块存放了 Inode,那么就有 16 * 512 = 8192 个 Inode,这和图中的数据相吻合!

然后通过 stat 命令查看当前文件的 inode 信息,其中 inode 号是 1051749,如图:

在这里插入图片描述
然后计算编号为 791104 的 Inode 所在的组号:

组 号 = I n o d e 编 号 每 组 有 多 少 个 I n o d e = ( 791104 − 1 ) 8192 = 96 组号 = \frac{Inode 编号}{每组有多少个 Inode} = \frac{(791104 - 1) }{ 8192} = 96 =InodeInode=8192(7911041)=96

然后找到刚刚 dump2fs 命令打印的第 96 号盘块的信息,3145760 ~ 3146271 一共 512 个盘块中,存放了该组所有的 Inode,故 Inode 表的起始盘块位于 3145760 处:

在这里插入图片描述

计算编号为 791104 的 Inode 在 Inode 表中的索引:

组 内 索 引 = I n o d e 编 号   %   每 组 有 多 少 个 I n o d e = ( 791104 − 1 ) % 8192 = 4671 组内索引 = Inode 编号 \ \% \ 每组有多少个 Inode \\ = (791104 - 1) \% 8192 = 4671

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值