Inode和块大小的概念

Sco*_*ott 0 unix size inode block concept

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

现在具有讽刺意味的是教授提供的解决方案,我理解单,双和三重间接分配背后的数学/逻辑,这是让我搞砸的直接分配.

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

教授暗示在我们的决赛中很可能会有这样的问题,而且我宁愿不冒险使用我不理解的千篇一律的公式.

Gre*_*ods 6

我相信谷歌本可以给你一个非常完整的答案,比在这里提出的要快得多,甚至在这里我甚至在这里得到了包含"inode间接块"的帖子的3,145个搜索结果,但是既然你在这里问过,这里去了回答:

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

在SysV inode的情况下,有40个字节的数据块地址的空间,并且它被分解为13个3字节地址和剩余的一个字节用于"文件生成号"(这里可以忽略).

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

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

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

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

了解Unix文件系统中的间接块