2012-12-11 36 views
0

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

现在这里的讽刺是教授提供的解决方案,我理解单一,双重和三重间接分配背后的数学/逻辑,这是直接分配让我感到困惑。

根据该解决方案,直接分配方案使用10个块,因为2^10个字节= 1 KB。为什么?这个公式背后的推理是什么? UNIX系统V inode梦想的发明者是否只是一些任意数字?因为对我来说,对于1024个字节有10个指针是没有意义的,因为1024/10 =每个102.4个字节有一个地址,因此拥有8个或其他一些数字更合乎逻辑。

这位教授暗示,在我们的决赛中可能会有这样的问题,我宁愿不冒险使用我不明白的饼干配方。

+0

注:编辑错字:20块应该已经有10个街区。 – Scott

回答

5

我敢肯定,谷歌可以给你一个非常完整的答案,比在这里问得更快,甚至在这里我得到3,145个包含“inode间接块”的帖子的搜索结果,但既然你确实问过在这里,回答如下:

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

对于SysV inode,有40个字节的数据块地址的空间,并且被分解为13个3字节地址和剩余一个字节作为“文件生成号”(您可以在此忽略) 。

因此,您有13个地址,您将如何高效地使用它们来处理文件数据块以查找包含多于13个数据块的文件?

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

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

此页面有一个很好的图表,在这种情况下,如果没有这样的图表,您的混淆不会被清除。请注意有关详细信息,该网页的会谈,从严格的SysV磁盘格式稍有不同(它有更多的直接块,且:

Understanding Indirect Blocks in Unix File Systems

0

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