inode中的块号是什么意思?

时间:2017-09-25 13:53:43

标签: c system

问题:

假设一个I节点可以容纳7个直接块指针和一个单间接块指针。如果块大小为4KB,并且有32位块号,那么系统支持的最大文件是什么?

答案:

7个直接块,大小为4KB

间接块指向4K / 4 = 1024个块,每个块大小为4KB

1031 * 4K = 4222976B = 4124KB~4.03MB

现在通常,inode有:

12个直接块指针

1个单独的间接指针

1个双重间接指针

1个三重间接指针

<<<<<<<<<<<<<<<<<<我的理解>>>>>>>>>>>>>>>>>

我知道inode有7个直接和1个间接块指针,每个块指针有4kb大小。当它说有32位块号时,这是否意味着那里有1024个块指针? / p>

2 个答案:

答案 0 :(得分:0)

如果块大小为4 kiB并且您有32位(4字节)块编号,则一个块中可以有1024个这样的块编号。 (我认为这是你不理解的部分。)这意味着:每个32位数字使用4个字节的块,因此这些数字中的1024个使用4096个字节=恰好1个块。因此,1024个块编号可以存储在一个块中。

但是在inode中,有七个直接块(通常)首先使用。所有大小均为< 28 kiB只使用直接块。

一旦直接块用完,就会分配一个块并将其分配给该inode,作为可以存储的块号列表。

答案 1 :(得分:0)

32位块号表示需要32位或4个字节来存储指向间接块的地址(或指针)。如果该块的每个地址占用4个字节,并且每个块的容量为4KB(4 * 1024字节),则每个间接块可以存储1024个地址(或指针)。包括7个直接指针,将有1031个指向数据块的指针。由于每个数据块的容量为4KB,因此可以支持的最大文件为1031 * 4KB。

相关问题