【问题标题】:The concept of Inodes and block sizes索引节点和块大小的概念
【发布时间】:2012-11-28 13:26:59
【问题描述】:

所以我在做一些考试复习题,其中一个说“在 UNIX 系统 V 中,一个块的长度是 1 KB,每个块可以容纳总共 256 个块地址。使用 inode 方案,什么文件的最大大小是多少?”

现在具有讽刺意味的是教授提供的解决方案,我了解单、双和三间接分配背后的数学/逻辑,直接分配让我很困惑。

根据解决方案,直接分配方案使用 10 个块,因为 2^10 字节 = 1 KB。为什么?这个公式背后的原因是什么? UNIX System V inode 的发明者只是想出了一个任意数字吗?因为对我来说,1024 个字节有 10 个指针是没有意义的,因为 1024/10 = 每 102.4 个字节一个地址,所以有 8 个或其他数字会更合乎逻辑。

教授暗示在我们的期末考试中很可能会有这样的问题,我宁愿不要冒险使用我不明白的千篇一律的公式。

【问题讨论】:

  • 注:编辑错字:20 块应该是 10 块。

标签: unix size block inode concept


【解决方案1】:

我相信 google 可以比在这里询问更快更容易地给你一个非常完整的答案,事实上即使在这里我也得到了 3,145 个包含“inode 间接块”的帖子的搜索结果,但既然你确实在这里问过,这里有一个回复:

好吧,磁盘上的 inode 结构只有一定数量的块地址空间,以及它必须包含的所有其他信息,如果它要适合一个块本身。

在 SysV inode 的情况下,有 40 个字节的数据块地址空间,这些空间被分解为 13 个 3 字节地址,剩下的一个字节用于“文件生成号”(您可以在此处忽略)。

那么,您有 13 个地址,您将如何有效地使用它们来处理包含不止 13 个数据块的文件的文件数据块?

决定使用前 10 个作为直接地址——即它们直接识别哪个块是文件的第 1-10 个数据块。第 11'th、12'th 和 13'th 地址指向间接块:分别为单个间接块、双间接块和三间接块。

正如问题所指出的,每个间接块可以容纳 256 个地址。因此,您只需将它们相乘并将它们相加,考虑到第一个间接块的地址集直接指向数据块,双重间接块首先指向更多数据块地址块,而三重间接块指向指向更多数据块地址指针块的指针块。

这个页面有一个很好的图表,在这种情况下,如果没有这样的图表,你的困惑可能不会被清除。请注意,此页面讨论的细节与严格的 SysV 磁盘格式略有不同(它有更多直接块,并且:

Understanding Indirect Blocks in Unix File Systems

【讨论】:

    【解决方案2】:

    使用 1024 字节和 4 字节指针的单个块,您可以存储 1024 / 4 = 256 个指针。如果每个文件都有一个用于 i 节点的块,那么您将获得 256 * 1024,即 256KB 的文件。不过我不知道那 10 个方块是从哪里来的。

    【讨论】:

      猜你喜欢
      • 2011-02-14
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      相关资源
      最近更新 更多