如何计算unix inode文件系统中某些文件大小占用的块数?

如何计算unix inode文件系统中某些文件大小占用的块数?

给定一个具有类 Unix 文件系统和以下规格的硬盘:

块大小为4KB,块地址长度为4字节,i节点具有传统结构(10个直接指针、1个间接指针、1个双间接指针和1个三重间接指针)。

以下文件占用的块数(包括数据块和地址块)是多少:

  • 文件 A 大小为 20 KB
  • 文件 B 大小为 200 KB
  • 文件C,大小为2000 KB
  • 文件D,大小为20000 KBytes

这里的问题是我什至找不到解决这个问题的公式。如果我有公式,我只需替换这些值即可完成。我不要求你帮我解决问题,我只是要求一个指导方针

答案1

数据结构的某个地方会有文档。

这是我的工作,我有目的地没有完成(这是你的作业/学习)。

对于 20K 文件,它只是 inode(没有间接块):因此 20KB/(4KB/块) + inode = 5blocks + inode。

对于其他人,您需要知道有多少个间接指针间接块(4KB /(4B/指针)= 1K 指针)。足够 4KB × 10 + 4KB × 1K = 4KB × ( 1K + 10 ) = 4KB × 1034 = 4136KB。 (不要忘记索引节点。我不知道它有多大)。

对于双重和三重间接。您将拥有一棵树:1K 个指针(一个块)分别指向 1K 个指针(1 个块),但每个指针都可以为空,因此并非所有这些块都被分配。

然后对于三重,这只是扩展。

另请注意,您首先分配直接块,然后从大小中减去它。然后分配间接并减法,然后分配双间接并减法,然后分配三重间接。如果它不适合,那么您需要升级到更现代的文件系统(您已经完成了此操作,但较旧的文件系统用于教学,因为它更容易获得基础知识)。

相关内容