Unix 索引节点和块大小的概念

Unix 索引节点和块大小的概念,unix,size,block,inode,concept,Unix,Size,Block,Inode,Concept,所以我在做一些复习题,其中一个题是“在UNIX system V中,一个块的长度是1KB,每个块可以容纳256个块地址。使用inode方案,文件的最大大小是多少?” 现在讽刺的是教授提供的解决方案,我理解单次、双次和三次间接分配背后的数学/逻辑,是直接分配把我搞砸了 根据该解决方案,直接分配方案使用10个块,因为2^10字节=1KB。为什么?这个公式背后的原因是什么?这只是UNIX系统V inode的发明者虚构的任意数字吗?因为对我来说,10个指针代表1024个“是”是没有意义的,因为1024/

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

现在讽刺的是教授提供的解决方案,我理解单次、双次和三次间接分配背后的数学/逻辑,是直接分配把我搞砸了

根据该解决方案,直接分配方案使用10个块,因为2^10字节=1KB。为什么?这个公式背后的原因是什么?这只是UNIX系统V inode的发明者虚构的任意数字吗?因为对我来说,10个指针代表1024个“是”是没有意义的,因为1024/10=每102.4字节有一个地址,如果有8个或其他数字,逻辑性会更好


教授暗示在我们的期末考试中很可能会有这样一个问题,我不想冒险使用我不懂的曲奇饼公式。

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

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

我相信谷歌可以给你一个非常完整的答案,比在这里问要快得多,也比在这里问要容易得多。事实上,即使在这里,我也可以得到3145个包含“inode间接块”的帖子的搜索结果,但既然你在这里问了,下面是一个回答:

嗯,磁盘上的inode结构只有一定数量的块地址,以及它必须包含的所有其他信息的空间,如果它要容纳在一个块本身中的话

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

那么,您有13个地址,您将如何有效地使用它们来为包含13个以上数据块的文件寻址文件数据块

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

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

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


我相信谷歌能给你一个非常完整的答案,比在这里问要快得多,也容易得多。事实上,即使在这里,我也能得到3145个包含“inode间接块”的帖子的搜索结果,但既然你在这里问了,下面是一个回答:

嗯,磁盘上的inode结构只有一定数量的块地址,以及它必须包含的所有其他信息的空间,如果它要容纳在一个块本身中的话

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

那么,您有13个地址,您将如何有效地使用它们来为包含13个以上数据块的文件寻址文件数据块

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

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

本页有一个很好的图表,在这种情况下,如果没有这样的图表,您的困惑可能无法消除。请注意,本页讨论的细节与严格的SysV on disk格式略有不同(它有更多的直接块,并且:


注意:编辑的排印:20块应该是10块。注意:编辑的排印:20块应该是10块。